Skip to content

ConnectionReference not instantiated properly for reach down into feature groups #2773

@joeseibel

Description

@joeseibel

The following model is not instantiated properly:

package feature_in_feature_group_test
public
  system s
  end s;

  system implementation s.i
    subcomponents
      left: process left_process;
      right: process right_process;
    connections
      conn_1: feature left.left_feature_group.out_f -> right.right_feature_group.in_f;
  end s.i;

  process left_process
    features
      left_feature_group: feature group left_feature_group;
  end left_process;

  feature group left_feature_group
    features
      out_f: out feature;
  end left_feature_group;

  process right_process
    features
      right_feature_group: feature group right_feature_group;
  end right_process;

  feature group right_feature_group
    features
      in_f: in feature;
  end right_feature_group;
end feature_in_feature_group_test;

The destination of the ConnectionReference should be the feature in_f, but it is the feature group right_feature_group. The source and destination of the ConnectionInstance are correct and the source of the ConnectionReference is correct, but not the destination of the ConnectionReference.

I suspect that the problem is in ConnectionInfo.resolveFeatureInstance(ConnectionInstanceEnd, ConnectionInstanceEnd). This method was probably not updated to support reach down into feature groups.

Here is an additional test case that is similar, but has a deeper nesting of feature groups:

package feature_in_multiple_feature_groups_test
public
  system s
  end s;

  system implementation s.i
    subcomponents
      left: process left_process;
      right: process right_process;
    connections
      conn_1: feature left.left_feature_group_1.left_feature_group_2.left_feature_group_3.out_f ->
        right.right_feature_group_1.right_feature_group_2.right_feature_group_3.in_f;
  end s.i;

  process left_process
    features
      left_feature_group_1: feature group left_feature_group_1;
  end left_process;

  feature group left_feature_group_1
    features
      left_feature_group_2: feature group left_feature_group_2;
  end left_feature_group_1;

  feature group left_feature_group_2
    features
      left_feature_group_3: feature group left_feature_group_3;
  end left_feature_group_2;

  feature group left_feature_group_3
    features
      out_f: out feature;
  end left_feature_group_3;

  process right_process
    features
      right_feature_group_1: feature group right_feature_group_1;
  end right_process;

  feature group right_feature_group_1
    features
      right_feature_group_2: feature group right_feature_group_2;
  end right_feature_group_1;

  feature group right_feature_group_2
    features
      right_feature_group_3: feature group right_feature_group_3;
  end right_feature_group_2;

  feature group right_feature_group_3
    features
      in_f: in feature;
  end right_feature_group_3;
end feature_in_multiple_feature_groups_test;

In this example, the destination of the ConnectionReference should be the feature in_f, but it is the feature group right_feature_group_1.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions