Skip to content

Commit f99ad61

Browse files
authored
Merge pull request #709 from Systems-Modeling/ST6RI-891
ST6RI-891 Feature chain name resolution allows protected names
2 parents 6dc0cd8 + 82c17bd commit f99ad61

File tree

3 files changed

+93
-1
lines changed

3 files changed

+93
-1
lines changed
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
//*
2+
XPECT_SETUP org.omg.kerml.xpect.tests.visibility.KerMLVisibilityTest
3+
ResourceSet {
4+
ThisFile {}
5+
File {from = "/library/Base.kerml"}
6+
File {from = "/library/Occurrences.kerml"}
7+
File {from = "/library/Performances.kerml"}
8+
File {from = "/library/ControlFunctions.kerml"}
9+
}
10+
Workspace {
11+
JavaProject {
12+
SrcFolder {
13+
ThisFile {}
14+
File {from = "/library/Base.kerml"}
15+
File {from = "/library/Occurrences.kerml"}
16+
File {from = "/library/Performances.kerml"}
17+
File {from = "/library/ControlFunctions.kerml"}
18+
}
19+
}
20+
}
21+
END_SETUP
22+
*/
23+
package Visibility_Protected_FeatureChaining {
24+
feature x {
25+
feature a;
26+
protected feature b;
27+
private feature c;
28+
}
29+
30+
feature y subsets x {
31+
feature redefines a;
32+
feature redefines b;
33+
// XPECT errors --> "Couldn't resolve reference to Feature 'c'." at "c"
34+
feature redefines c;
35+
}
36+
37+
feature redefines x.a;
38+
// XPECT errors --> "Couldn't resolve reference to Feature 'b'." at "b"
39+
feature redefines x.b;
40+
// XPECT errors --> "Couldn't resolve reference to Feature 'c'." at "c"
41+
feature redefines x.c;
42+
43+
feature x1 = x.a;
44+
// XPECT errors --> "Couldn't resolve reference to Element 'b'." at "b"
45+
feature x2 = x.b;
46+
// XPECT errors --> "Couldn't resolve reference to Element 'c'." at "c"
47+
feature x3 = x.c;
48+
}

org.omg.kerml.xtext/src/org/omg/kerml/xtext/scoping/KerMLScope.xtend

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ class KerMLScope extends AbstractScope implements ISysMLScope {
214214
ns.gen(QualifiedName.create(), newHashSet, null, true, true)
215215
} else {
216216
val includeAll = referenceType === SysMLPackage.eINSTANCE.membership && element instanceof Import && (element as Import).isImportAll
217-
ns.resolve(QualifiedName.create(), newHashSet, newHashSet, newHashSet, false, isInsideScope, true, true, includeAll)
217+
ns.resolve(QualifiedName.create(), newHashSet, newHashSet, newHashSet, false, isInsideScope, isInsideScope, true, includeAll)
218218
}
219219
if (targetqn !== null && skip !== null) {
220220
scopeProvider.removeVisited(skip)
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
//*
2+
XPECT_SETUP org.omg.sysml.xpect.tests.validation.invalid.SysMLTests
3+
ResourceSet {
4+
ThisFile {}
5+
File {from ="/library.kernel/Base.kerml"}
6+
File {from ="/library.kernel/Occurrences.kerml"}
7+
File {from ="/library.kernel/Objects.kerml"}
8+
File {from ="/library.kernel/Performances.kerml"}
9+
File {from ="/library.kernel/FeatureReferencingPerformances.kerml"}
10+
File {from ="/library.systems/Attributes.sysml"}
11+
File {from ="/library.systems/Items.sysml"}
12+
File {from ="/library.systems/Actions.sysml"}
13+
}
14+
Workspace {
15+
JavaProject {
16+
SrcFolder {
17+
ThisFile {}
18+
File {from ="/library.kernel/Base.kerml"}
19+
File {from ="/library.kernel/Occurrences.kerml"}
20+
File {from ="/library.kernel/Objects.kerml"}
21+
File {from ="/library.kernel/Performances.kerml"}
22+
File {from ="/library.kernel/FeatureReferencingPerformances.kerml"}
23+
File {from ="/library.systems/Attributes.sysml"}
24+
File {from ="/library.systems/Items.sysml"}
25+
File {from ="/library.systems/Actions.sysml"}
26+
}
27+
}
28+
}
29+
END_SETUP
30+
*/
31+
package AssignmentActionUsage_invalid {
32+
item i {
33+
attribute a;
34+
protected attribute b;
35+
private attribute c;
36+
}
37+
action def A {
38+
assign i.a := null;
39+
// XPECT errors --> "Couldn't resolve reference to Element 'b'." at "b"
40+
assign i.b := null;
41+
// XPECT errors --> "Couldn't resolve reference to Element 'c'." at "c"
42+
assign i.c := null;
43+
}
44+
}

0 commit comments

Comments
 (0)