Skip to content

Commit 1414b0f

Browse files
committed
ST6RI-36 Updated name resolution tests.
1 parent 5a54762 commit 1414b0f

6 files changed

Lines changed: 64 additions & 55 deletions

File tree

org.omg.sysml.tests/src/org/omg/sysml/tests/MemberNameTests.xtend

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ class MemberNameTests {
110110
EcoreUtil2.resolveAll(result)
111111
Assert.assertNotNull(result)
112112
Assert.assertTrue(result.eResource.errors.length == 1)
113-
result.assertError(SysMLPackage.eINSTANCE.category, XtextSyntaxDiagnostic.LINKING_DIAGNOSTIC)
113+
result.assertError(SysMLPackage.eINSTANCE.featureTyping, XtextSyntaxDiagnostic.LINKING_DIAGNOSTIC)
114114
}
115115

116116
@Test

org.omg.sysml.tests/src/org/omg/sysml/tests/MultipleImportTests.xtend

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -118,8 +118,8 @@ class MultipleImportTests {
118118
''', rs)
119119
Assert.assertNotNull(result)
120120
EcoreUtil2.resolveAll(result)
121-
result.assertError(SysMLPackage.eINSTANCE.element, XtextSyntaxDiagnostic.LINKING_DIAGNOSTIC)
122-
result.assertError(SysMLPackage.eINSTANCE.category, XtextSyntaxDiagnostic.LINKING_DIAGNOSTIC)
121+
result.assertError(SysMLPackage.eINSTANCE.membership, XtextSyntaxDiagnostic.LINKING_DIAGNOSTIC)
122+
result.assertError(SysMLPackage.eINSTANCE.featureTyping, XtextSyntaxDiagnostic.LINKING_DIAGNOSTIC)
123123
Assert.assertTrue(result.eResource.errors.size == 2)
124124
}
125125

@@ -174,8 +174,8 @@ class MultipleImportTests {
174174

175175
Assert.assertNotNull(result)
176176
EcoreUtil2.resolveAll(result)
177-
result.assertError(SysMLPackage.eINSTANCE.generalization, XtextSyntaxDiagnostic.LINKING_DIAGNOSTIC)
178-
result.assertError(SysMLPackage.eINSTANCE.feature, XtextSyntaxDiagnostic.LINKING_DIAGNOSTIC)
177+
result.assertError(SysMLPackage.eINSTANCE.superclassing, XtextSyntaxDiagnostic.LINKING_DIAGNOSTIC)
178+
result.assertError(SysMLPackage.eINSTANCE.featureTyping, XtextSyntaxDiagnostic.LINKING_DIAGNOSTIC)
179179
Assert.assertTrue(result.eResource.errors.size == 2)
180180
}
181181

org.omg.sysml.tests/src/org/omg/sysml/tests/ShadowingTests.xtend

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,7 @@
2626
package org.omg.sysml.tests
2727

2828
import com.google.inject.Inject
29-
import com.google.inject.Provider
30-
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl
3129
import org.eclipse.xtext.EcoreUtil2
32-
import org.eclipse.xtext.resource.XtextResourceSet
3330
import org.eclipse.xtext.resource.XtextSyntaxDiagnostic
3431
import org.eclipse.xtext.testing.InjectWith
3532
import org.eclipse.xtext.testing.XtextRunner
@@ -46,7 +43,7 @@ import org.omg.sysml.tests.AlfInjectorProvider
4643

4744
@RunWith(XtextRunner)
4845
@InjectWith(AlfInjectorProvider)
49-
class ShadowingTest {
46+
class ShadowingTests {
5047

5148
@Inject
5249
ParseHelper<Package> parseHelper
@@ -72,7 +69,7 @@ class ShadowingTest {
7269
val outerA = result.ownedMembership.head.ownedMemberElement as Class
7370
val innerA = outerA.ownedMembership.head.ownedMemberElement as Class
7471
val B = innerA.ownedMembership.head.ownedMemberElement as Class
75-
val gen = B.ownedElement.head as Generalization
72+
val gen = B.ownedRelationship.head as Generalization
7673

7774
Assert.assertNotNull(result)
7875
EcoreUtil2.resolveAll(result)
@@ -147,7 +144,7 @@ class ShadowingTest {
147144
val classA1 = result.ownedMembership.get(1).ownedMemberElement as Class
148145
val classA = classA1.ownedMembership.head.ownedMemberElement as Class
149146
val B = classA.ownedMembership.head.ownedMemberElement as Class
150-
val gen = B.ownedElement.head as Generalization
147+
val gen = B.ownedRelationship.head as Generalization
151148
Assert.assertEquals(gen.general, classA)
152149

153150
result.assertNoErrors
@@ -178,7 +175,7 @@ class ShadowingTest {
178175
ownedMemberElement as Class
179176
val class_b = (result.ownedMembership.get(3).ownedMemberElement as Class).ownedMembership.head.
180177
ownedMemberElement as Class
181-
val gen = class_b.ownedElement.head as Generalization
178+
val gen = class_b.ownedRelationship.head as Generalization
182179
Assert.assertEquals(gen.general, class_a1)
183180

184181
result.assertNoErrors
@@ -523,8 +520,8 @@ class ShadowingTest {
523520
val class_A = result.ownedMembership.get(0).ownedMemberElement as Class
524521
val class_test_A = result.ownedMembership.get(1).ownedMemberElement as Class
525522
val class_test_alias = result.ownedMembership.get(2).ownedMemberElement as Class
526-
val gen_test_A = class_test_A.ownedElement.head as Generalization
527-
val gen_test_alias = class_test_alias.ownedElement.head as Generalization
523+
val gen_test_A = class_test_A.ownedRelationship.head as Generalization
524+
val gen_test_alias = class_test_alias.ownedRelationship.head as Generalization
528525
val imported_A = (result.ownedImport.get(0).importedPackage as Package).ownedMembership.get(1).
529526
ownedMemberElement as Class
530527

@@ -553,7 +550,7 @@ class ShadowingTest {
553550
val class_A = result.ownedMembership.get(0).ownedMemberElement as Class
554551
val class_test_A = result.ownedMembership.get(2).ownedMemberElement as Class
555552
val A_alias = result.ownedMembership.get(1).memberElement as Class
556-
val gen_test_A = class_test_A.ownedElement.head as Generalization
553+
val gen_test_A = class_test_A.ownedRelationship.head as Generalization
557554
val imported_A = (result.ownedImport.get(0).importedPackage as Package).ownedMembership.get(1).
558555
ownedMemberElement as Class
559556

org.omg.sysml.tests/src/org/omg/sysml/tests/SimpleImportAsFeatureTests.xtend

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ class SimpleImportAsFeatureTests {
135135
Assert.assertNotNull(result)
136136
EcoreUtil2.resolveAll(result)
137137
Assert.assertTrue(result.eResource.errors.length == 1)
138-
result.assertError(SysMLPackage.eINSTANCE.category, XtextSyntaxDiagnostic.LINKING_DIAGNOSTIC)
138+
result.assertError(SysMLPackage.eINSTANCE.featureTyping, XtextSyntaxDiagnostic.LINKING_DIAGNOSTIC)
139139
}
140140

141141
@Test
@@ -153,7 +153,7 @@ class SimpleImportAsFeatureTests {
153153
Assert.assertNotNull(result)
154154
EcoreUtil2.resolveAll(result)
155155
Assert.assertTrue(result.eResource.errors.length == 1)
156-
result.assertError(SysMLPackage.eINSTANCE.category, XtextSyntaxDiagnostic.LINKING_DIAGNOSTIC)
156+
result.assertError(SysMLPackage.eINSTANCE.featureTyping, XtextSyntaxDiagnostic.LINKING_DIAGNOSTIC)
157157
}
158158

159159
@Test
@@ -171,7 +171,7 @@ class SimpleImportAsFeatureTests {
171171
Assert.assertNotNull(result)
172172
EcoreUtil2.resolveAll(result)
173173
Assert.assertTrue(result.eResource.errors.length == 1)
174-
result.assertError(SysMLPackage.eINSTANCE.category, XtextSyntaxDiagnostic.LINKING_DIAGNOSTIC)
174+
result.assertError(SysMLPackage.eINSTANCE.featureTyping, XtextSyntaxDiagnostic.LINKING_DIAGNOSTIC)
175175
}
176176

177177
@Test
@@ -189,6 +189,6 @@ class SimpleImportAsFeatureTests {
189189
Assert.assertNotNull(result)
190190
EcoreUtil2.resolveAll(result)
191191
Assert.assertTrue(result.eResource.errors.length == 1)
192-
result.assertError(SysMLPackage.eINSTANCE.category, XtextSyntaxDiagnostic.LINKING_DIAGNOSTIC)
192+
result.assertError(SysMLPackage.eINSTANCE.featureTyping, XtextSyntaxDiagnostic.LINKING_DIAGNOSTIC)
193193
}
194194
}

org.omg.sysml.tests/src/org/omg/sysml/tests/VisibilityTests.xtend

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -193,8 +193,8 @@ class VisibilityTests {
193193
''', rs)
194194
EcoreUtil2.resolveAll(result)
195195
Assert.assertNotNull(result)
196-
result.assertError(SysMLPackage.eINSTANCE.generalization, XtextSyntaxDiagnostic.LINKING_DIAGNOSTIC)
197-
result.assertError(SysMLPackage.eINSTANCE.feature, XtextSyntaxDiagnostic.LINKING_DIAGNOSTIC)
196+
result.assertError(SysMLPackage.eINSTANCE.superclassing, XtextSyntaxDiagnostic.LINKING_DIAGNOSTIC)
197+
result.assertError(SysMLPackage.eINSTANCE.featureTyping, XtextSyntaxDiagnostic.LINKING_DIAGNOSTIC)
198198
Assert.assertTrue(result.eResource.errors.length == 2)
199199
}
200200

@@ -290,7 +290,7 @@ class VisibilityTests {
290290
}
291291
''', rs)
292292
tester.validate(result).assertAll(
293-
getErrorCode(AlfValidator.NOT_PUBLIC_INHERITANCE)
293+
getErrorCode(AlfValidator.NOT_PUBLIC_SUPERCLASS)
294294
)
295295
Assert.assertNotNull(result)
296296
EcoreUtil2.resolveAll(result)
@@ -328,7 +328,7 @@ class VisibilityTests {
328328
}
329329
''', rs)
330330
tester.validate(result).assertAll(
331-
getErrorCode(AlfValidator.NOT_PUBLIC_INHERITANCE)
331+
getErrorCode(AlfValidator.NOT_PUBLIC_SUPERCLASS)
332332
)
333333
Assert.assertNotNull(result)
334334
EcoreUtil2.resolveAll(result)
@@ -345,7 +345,7 @@ class VisibilityTests {
345345
}
346346
''', rs)
347347
tester.validate(result).assertAll(
348-
getErrorCode(AlfValidator.NOT_PUBLIC_INHERITANCE)
348+
getErrorCode(AlfValidator.NOT_PUBLIC_SUPERCLASS)
349349
)
350350
Assert.assertNotNull(result)
351351
EcoreUtil2.resolveAll(result)
@@ -384,7 +384,7 @@ class VisibilityTests {
384384
Assert.assertNotNull(result)
385385
EcoreUtil2.resolveAll(result)
386386
tester.validate(result).assertAll(
387-
getErrorCode(AlfValidator.NOT_PUBLIC_INHERITANCE),
387+
getErrorCode(AlfValidator.NOT_PUBLIC_SUPERCLASS),
388388
getErrorCode(AlfValidator.NOT_PUBLIC_FEATURE_TYPE)
389389
)
390390

@@ -403,7 +403,7 @@ class VisibilityTests {
403403
''', rs)
404404
tester.validate(result).assertAll(
405405
getErrorCode(AlfValidator.NOT_PUBLIC_MEMBERSHIP),
406-
getErrorCode(AlfValidator.NOT_PUBLIC_INHERITANCE),
406+
getErrorCode(AlfValidator.NOT_PUBLIC_SUPERCLASS),
407407
getErrorCode(AlfValidator.NOT_PUBLIC_FEATURE_TYPE)
408408
)
409409
Assert.assertNotNull(result)
@@ -423,7 +423,7 @@ class VisibilityTests {
423423
424424
''', rs)
425425
tester.validate(result).assertAll(
426-
getErrorCode(AlfValidator.NOT_PUBLIC_INHERITANCE)
426+
getErrorCode(AlfValidator.NOT_PUBLIC_SUPERCLASS)
427427
)
428428
Assert.assertNotNull(result)
429429
EcoreUtil2.resolveAll(result)
@@ -443,7 +443,7 @@ class VisibilityTests {
443443
444444
''', rs)
445445
tester.validate(result).assertAll(
446-
getErrorCode(AlfValidator.NOT_PUBLIC_INHERITANCE)
446+
getErrorCode(AlfValidator.NOT_PUBLIC_SUPERCLASS)
447447
)
448448
Assert.assertNotNull(result)
449449
EcoreUtil2.resolveAll(result)
@@ -461,7 +461,7 @@ class VisibilityTests {
461461
462462
''', rs)
463463
tester.validate(result).assertAll(
464-
getErrorCode(AlfValidator.NOT_PUBLIC_INHERITANCE)
464+
getErrorCode(AlfValidator.NOT_PUBLIC_SUPERCLASS)
465465
)
466466
Assert.assertNotNull(result)
467467
EcoreUtil2.resolveAll(result)

org.omg.sysml/src/org/omg/sysml/validation/AlfValidator.xtend

Lines changed: 38 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/*****************************************************************************
22
* SysML 2 Pilot Implementation
33
* Copyright (c) 2018 IncQuery Labs Ltd.
4-
* Copyright (c) 2018 Model Driven Solutions, Inc.
4+
* Copyright (c) 2018, 2019 Model Driven Solutions, Inc.
55
*
66
* This program is free software: you can redistribute it and/or modify
77
* it under the terms of the GNU Lesser General Public License as published by
@@ -19,22 +19,23 @@
1919
* @license LGPL-3.0-or-later <http://spdx.org/licenses/LGPL-3.0-or-later>
2020
*
2121
* Contributors:
22-
* Zoltan Kiss
23-
* Balazs Grill
24-
* Ed Seidewitz
22+
* Zoltan Kiss, IncQuery
23+
* Balazs Grill, IncQuery
24+
* Ed Seidewitz, MDS
2525
*
2626
*****************************************************************************/
2727
package org.omg.sysml.validation
2828

2929
import org.eclipse.emf.ecore.EObject
3030
import org.eclipse.xtext.validation.Check
3131
import org.omg.sysml.lang.sysml.Element
32-
import org.omg.sysml.lang.sysml.Feature
33-
import org.omg.sysml.lang.sysml.Generalization
3432
import org.omg.sysml.lang.sysml.Import
3533
import org.omg.sysml.lang.sysml.Membership
3634
import org.omg.sysml.lang.sysml.SysMLPackage
3735
import org.omg.sysml.lang.sysml.VisibilityKind
36+
import org.omg.sysml.lang.sysml.Superclassing
37+
import org.omg.sysml.lang.sysml.Subsetting
38+
import org.omg.sysml.lang.sysml.FeatureTyping
3839

3940
/**
4041
* This class contains custom validation rules.
@@ -53,7 +54,7 @@ class AlfValidator extends AbstractAlfValidator {
5354
return true
5455
}
5556

56-
public static val NOT_PUBLIC_MEMBERSHIP = 'notPublicImport'
57+
public static val NOT_PUBLIC_MEMBERSHIP = 'notPublicMembership'
5758

5859
protected def EObject filePackage(Element e) {
5960
var pack = e
@@ -68,7 +69,7 @@ class AlfValidator extends AbstractAlfValidator {
6869
val elem = membership.memberElement
6970
if (elem !== membership.ownedMemberElement) {
7071
val elemPack = elem.filePackage
71-
val membershipPack = membership.filePackage
72+
val membershipPack = membership.membershipOwningPackage.filePackage
7273
if (membership.memberElement !== null && elemPack !== membershipPack &&
7374
!membership.memberElement.isGlobalPublic) {
7475
error("Referenced element is not visible in this scope", membership, SysMLPackage.eINSTANCE.membership_MemberElement,
@@ -77,32 +78,43 @@ class AlfValidator extends AbstractAlfValidator {
7778
}
7879
}
7980

80-
public static val NOT_PUBLIC_INHERITANCE = 'notPublicImport'
81+
public static val NOT_PUBLIC_SUPERCLASS = 'notPublicSuperclass'
8182

8283
@Check
83-
def checkInheritanceVisibility(Generalization gen) {
84-
val ownerr = gen.owningRelatedElement
84+
def checkInheritanceVisibility(Superclassing sup) {
85+
val ownerr = sup.owningRelatedElement
8586
val ownerrPack = ownerr.filePackage
86-
val generalPack = gen.general.filePackage
87-
if (ownerrPack !== generalPack && !gen.general.isGlobalPublic) {
88-
error("Inherited import is not visible in this scope", gen, SysMLPackage.eINSTANCE.generalization_General,
89-
NOT_PUBLIC_INHERITANCE)
87+
val superPack = sup.superclass.filePackage
88+
if (ownerrPack !== superPack && !sup.superclass.isGlobalPublic) {
89+
error("Superclass is not visible in this scope", sup, SysMLPackage.eINSTANCE.superclassing_Superclass,
90+
org.omg.sysml.validation.AlfValidator.NOT_PUBLIC_SUPERCLASS)
9091
}
9192
}
9293

93-
public static val NOT_PUBLIC_FEATURE_TYPE = 'notPublicFeature'
94+
public static val NOT_PUBLIC_FEATURE = 'notPublicFeature'
9495

9596
@Check
96-
def checkFeatureVisibility(Feature feature) {
97-
val refs = feature.type.toSet
98-
val featurePack = feature.filePackage
99-
refs.forEach [ e |
100-
val refPack = e.filePackage
101-
if (featurePack !== refPack && !e.isGlobalPublic) {
102-
error("Referenced type is not visible in this scope", feature,
103-
SysMLPackage.eINSTANCE.feature_ReferencedType, NOT_PUBLIC_FEATURE_TYPE)
104-
}
105-
]
97+
def checkSubsettingVisibility(Subsetting sub) {
98+
val ownerr = sub.owningRelatedElement
99+
val ownerrPack = ownerr.filePackage
100+
val featurePack = sub.subsettedFeature.filePackage
101+
if (ownerrPack !== featurePack && !sub.subsettedFeature.isGlobalPublic) {
102+
error("Subsetted/redefined feature is not visible in this scope", sub, SysMLPackage.eINSTANCE.subsetting_SubsettedFeature,
103+
org.omg.sysml.validation.AlfValidator.NOT_PUBLIC_SUPERCLASS)
104+
}
105+
}
106+
107+
public static val NOT_PUBLIC_FEATURE_TYPE = 'notPublicType'
108+
109+
@Check
110+
def checkFeatureVisibility(FeatureTyping typing) {
111+
val type = typing.type
112+
val featurePack = typing.filePackage
113+
val refPack = type.filePackage
114+
if (featurePack !== refPack && !type.isGlobalPublic) {
115+
error("Referenced type is not visible in this scope", typing,
116+
SysMLPackage.eINSTANCE.feature_ReferencedType, NOT_PUBLIC_FEATURE_TYPE)
117+
}
106118
}
107119
public static val NOT_PUBLIC_IMPORT = 'notPublicImport'
108120

0 commit comments

Comments
 (0)