diff options
author | Kristóf Marussy <kristof@marussy.com> | 2022-11-20 20:52:17 +0100 |
---|---|---|
committer | Kristóf Marussy <kristof@marussy.com> | 2022-11-22 16:40:03 +0100 |
commit | 19d38b03de9af68e6234a2a07ac54c36d73edaa7 (patch) | |
tree | f6c402aa3610bdf66fb842e3b6206622eed8a2fd /subprojects/language/src | |
parent | refactor(test): WebSocket integ test robustness (diff) | |
download | refinery-19d38b03de9af68e6234a2a07ac54c36d73edaa7.tar.gz refinery-19d38b03de9af68e6234a2a07ac54c36d73edaa7.tar.zst refinery-19d38b03de9af68e6234a2a07ac54c36d73edaa7.zip |
refactor(language): simplify syntax
Diffstat (limited to 'subprojects/language/src')
10 files changed, 64 insertions, 73 deletions
diff --git a/subprojects/language/src/main/java/tools/refinery/language/Problem.xtext b/subprojects/language/src/main/java/tools/refinery/language/Problem.xtext index 8b13a693..95a64737 100644 --- a/subprojects/language/src/main/java/tools/refinery/language/Problem.xtext +++ b/subprojects/language/src/main/java/tools/refinery/language/Problem.xtext | |||
@@ -33,7 +33,8 @@ enum ReferenceKind: | |||
33 | REFERENCE="refers" | CONTAINMENT="contains" | CONTAINER="container"; | 33 | REFERENCE="refers" | CONTAINMENT="contains" | CONTAINER="container"; |
34 | 34 | ||
35 | ReferenceDeclaration: | 35 | ReferenceDeclaration: |
36 | kind=ReferenceKind referenceType=[Relation|QualifiedName] | 36 | (referenceType=[Relation|NonContainmentQualifiedName] | |
37 | kind=ReferenceKind referenceType=[Relation|QualifiedName]) | ||
37 | ("[" multiplicity=Multiplicity "]")? | 38 | ("[" multiplicity=Multiplicity "]")? |
38 | name=Identifier | 39 | name=Identifier |
39 | ("opposite" opposite=[ReferenceDeclaration|QualifiedName])?; | 40 | ("opposite" opposite=[ReferenceDeclaration|QualifiedName])?; |
@@ -64,7 +65,7 @@ Conjunction: | |||
64 | literals+=Expr ("," literals+=Expr)*; | 65 | literals+=Expr ("," literals+=Expr)*; |
65 | 66 | ||
66 | FunctionDefinition: | 67 | FunctionDefinition: |
67 | functionType=PrimitiveType name=Identifier | 68 | "fn" functionType=PrimitiveType name=Identifier |
68 | "(" (parameters+=Parameter ("," parameters+=Parameter)*)? ")" | 69 | "(" (parameters+=Parameter ("," parameters+=Parameter)*)? ")" |
69 | ("=" cases+=Case (";" cases+=Case)*)? | 70 | ("=" cases+=Case (";" cases+=Case)*)? |
70 | "."; | 71 | "."; |
@@ -106,7 +107,8 @@ Expr: | |||
106 | ComparisonExpr; | 107 | ComparisonExpr; |
107 | 108 | ||
108 | enum ComparisonOp: | 109 | enum ComparisonOp: |
109 | LESS="<" | LESS_EQ="<=" | GREATER=">" | GREATER_EQ=">=" | EQ="==" | NOT_EQ="!=" | IN="in"; | 110 | LESS="<" | LESS_EQ="<=" | GREATER=">" | GREATER_EQ=">=" | EQ="==" | NOT_EQ="!=" | |
111 | IN="in" | SUBSUMES=":>" | SUBSUMED_BY="<:" | ABS_EQ="===" | ABS_NOT_EQ="!=="; | ||
110 | 112 | ||
111 | ComparisonExpr returns Expr: | 113 | ComparisonExpr returns Expr: |
112 | LatticeExpr ({ComparisonExpr.left=current} | 114 | LatticeExpr ({ComparisonExpr.left=current} |
@@ -163,7 +165,7 @@ NegationExpr: | |||
163 | "!" body=UnaryExpr; | 165 | "!" body=UnaryExpr; |
164 | 166 | ||
165 | CountExpr: | 167 | CountExpr: |
166 | "#" body=UnaryExpr; | 168 | "count" body=UnaryExpr; |
167 | 169 | ||
168 | enum AggregationOp: | 170 | enum AggregationOp: |
169 | SUM="sum" | PROD="prod" | MIN="min" | MAX="max"; | 171 | SUM="sum" | PROD="prod" | MIN="min" | MAX="max"; |
@@ -180,7 +182,7 @@ VariableOrNodeExpr: | |||
180 | variableOrNode=[VariableOrNode|QualifiedName]; | 182 | variableOrNode=[VariableOrNode|QualifiedName]; |
181 | 183 | ||
182 | Constant: | 184 | Constant: |
183 | RealConstant | IntConstant | InfConstant | StringConstant; | 185 | RealConstant | IntConstant | InfConstant | StringConstant | LogicConstant; |
184 | 186 | ||
185 | IntConstant: | 187 | IntConstant: |
186 | intValue=INT; | 188 | intValue=INT; |
@@ -194,12 +196,18 @@ InfConstant: | |||
194 | StringConstant: | 196 | StringConstant: |
195 | stringValue=STRING; | 197 | stringValue=STRING; |
196 | 198 | ||
199 | enum LogicValue: | ||
200 | TRUE="true" | FALSE="false" | UNKNOWN="unknown" | ERROR="error"; | ||
201 | |||
202 | LogicConstant: | ||
203 | logicValue=LogicValue; | ||
204 | |||
197 | Assertion: | 205 | Assertion: |
198 | default?="default"? | 206 | default?="default"? |
199 | (relation=[Relation|QualifiedName] | 207 | (relation=[Relation|QualifiedName] |
200 | "(" (arguments+=AssertionArgument ("," arguments+=AssertionArgument)*)? ")" | 208 | "(" (arguments+=AssertionArgument ("," arguments+=AssertionArgument)*)? ")" |
201 | value=AssertionValue | | 209 | ":" value=Expr | |
202 | value=ShortLogicAssertionValue | 210 | value=ShortLogicConstant |
203 | relation=[Relation|QualifiedName] | 211 | relation=[Relation|QualifiedName] |
204 | "(" (arguments+=AssertionArgument ("," arguments+=AssertionArgument)*)? ")") | 212 | "(" (arguments+=AssertionArgument ("," arguments+=AssertionArgument)*)? ")") |
205 | "."; | 213 | "."; |
@@ -213,23 +221,11 @@ NodeAssertionArgument: | |||
213 | WildcardAssertionArgument: | 221 | WildcardAssertionArgument: |
214 | {WildcardAssertionArgument} "*"; | 222 | {WildcardAssertionArgument} "*"; |
215 | 223 | ||
216 | AssertionValue: | ||
217 | LogicAssertionValue | ExprAssertionValue; | ||
218 | |||
219 | enum LogicValue: | ||
220 | TRUE="true" | FALSE="false" | UNKNOWN="unknown" | ERROR="error"; | ||
221 | |||
222 | LogicAssertionValue: | ||
223 | ":" logicValue=LogicValue; | ||
224 | |||
225 | ExprAssertionValue: | ||
226 | (range?="in" | "=") body=Expr; | ||
227 | |||
228 | enum ShortLogicValue returns LogicValue: | 224 | enum ShortLogicValue returns LogicValue: |
229 | FALSE="!" | UNKNOWN="?"; | 225 | FALSE="!" | UNKNOWN="?"; |
230 | 226 | ||
231 | ShortLogicAssertionValue returns LogicAssertionValue: | 227 | ShortLogicConstant returns LogicConstant: |
232 | {LogicAssertionValue} logicValue=ShortLogicValue?; | 228 | {LogicConstant} logicValue=ShortLogicValue?; |
233 | 229 | ||
234 | ScopeDeclaration: | 230 | ScopeDeclaration: |
235 | "scope" typeScopes+=TypeScope ("," typeScopes+=TypeScope)* "."; | 231 | "scope" typeScopes+=TypeScope ("," typeScopes+=TypeScope)* "."; |
@@ -255,7 +251,7 @@ ExactMultiplicity: | |||
255 | exactValue=INT; | 251 | exactValue=INT; |
256 | 252 | ||
257 | IndividualDeclaration: | 253 | IndividualDeclaration: |
258 | "individual" nodes+=EnumLiteral ("," nodes+=EnumLiteral)* "."; | 254 | "indiv" nodes+=EnumLiteral ("," nodes+=EnumLiteral)* "."; |
259 | 255 | ||
260 | UpperBound returns ecore::EInt: | 256 | UpperBound returns ecore::EInt: |
261 | INT | "*"; | 257 | INT | "*"; |
@@ -263,8 +259,14 @@ UpperBound returns ecore::EInt: | |||
263 | QualifiedName hidden(): | 259 | QualifiedName hidden(): |
264 | Identifier ("::" Identifier)*; | 260 | Identifier ("::" Identifier)*; |
265 | 261 | ||
262 | NonContainmentQualifiedName hidden(): | ||
263 | NonContainmentIdentifier ("::" Identifier)*; | ||
264 | |||
266 | Identifier: | 265 | Identifier: |
267 | ID | "contains" | "contained" | "sum" | "prod" | "min" | "max"; | 266 | NonContainmentIdentifier | "contains"; |
267 | |||
268 | NonContainmentIdentifier: | ||
269 | ID | "contained" | "sum" | "prod" | "min" | "max"; | ||
268 | 270 | ||
269 | Real returns ecore::EDouble: | 271 | Real returns ecore::EDouble: |
270 | EXPONENTIAL | INT "." (INT | EXPONENTIAL); | 272 | EXPONENTIAL | INT "." (INT | EXPONENTIAL); |
diff --git a/subprojects/language/src/main/java/tools/refinery/language/formatting2/ProblemFormatter.java b/subprojects/language/src/main/java/tools/refinery/language/formatting2/ProblemFormatter.java index 46870edb..797535ea 100644 --- a/subprojects/language/src/main/java/tools/refinery/language/formatting2/ProblemFormatter.java +++ b/subprojects/language/src/main/java/tools/refinery/language/formatting2/ProblemFormatter.java | |||
@@ -3,7 +3,6 @@ | |||
3 | */ | 3 | */ |
4 | package tools.refinery.language.formatting2; | 4 | package tools.refinery.language.formatting2; |
5 | 5 | ||
6 | import com.google.inject.Inject; | ||
7 | import org.eclipse.emf.ecore.EObject; | 6 | import org.eclipse.emf.ecore.EObject; |
8 | import org.eclipse.xtext.formatting2.AbstractJavaFormatter; | 7 | import org.eclipse.xtext.formatting2.AbstractJavaFormatter; |
9 | import org.eclipse.xtext.formatting2.IFormattableDocument; | 8 | import org.eclipse.xtext.formatting2.IFormattableDocument; |
@@ -11,15 +10,10 @@ import org.eclipse.xtext.formatting2.IHiddenRegionFormatter; | |||
11 | import org.eclipse.xtext.formatting2.regionaccess.ISemanticRegionsFinder; | 10 | import org.eclipse.xtext.formatting2.regionaccess.ISemanticRegionsFinder; |
12 | import org.eclipse.xtext.formatting2.regionaccess.ISequentialRegion; | 11 | import org.eclipse.xtext.formatting2.regionaccess.ISequentialRegion; |
13 | import org.eclipse.xtext.xbase.lib.Procedures.Procedure1; | 12 | import org.eclipse.xtext.xbase.lib.Procedures.Procedure1; |
14 | |||
15 | import tools.refinery.language.model.problem.*; | 13 | import tools.refinery.language.model.problem.*; |
16 | import tools.refinery.language.services.ProblemGrammarAccess; | ||
17 | 14 | ||
18 | @SuppressWarnings("UnstableApiUsage") | 15 | @SuppressWarnings("UnstableApiUsage") |
19 | public class ProblemFormatter extends AbstractJavaFormatter { | 16 | public class ProblemFormatter extends AbstractJavaFormatter { |
20 | @Inject | ||
21 | private ProblemGrammarAccess problemGrammarAccess; | ||
22 | |||
23 | protected void format(Problem problem, IFormattableDocument doc) { | 17 | protected void format(Problem problem, IFormattableDocument doc) { |
24 | doc.prepend(problem, this::noSpace); | 18 | doc.prepend(problem, this::noSpace); |
25 | var region = regionFor(problem); | 19 | var region = regionFor(problem); |
@@ -37,31 +31,26 @@ public class ProblemFormatter extends AbstractJavaFormatter { | |||
37 | doc.append(region.feature(ProblemPackage.Literals.ASSERTION__DEFAULT), this::oneSpace); | 31 | doc.append(region.feature(ProblemPackage.Literals.ASSERTION__DEFAULT), this::oneSpace); |
38 | doc.append(region.feature(ProblemPackage.Literals.ASSERTION__RELATION), this::noSpace); | 32 | doc.append(region.feature(ProblemPackage.Literals.ASSERTION__RELATION), this::noSpace); |
39 | formatParenthesizedList(region, doc); | 33 | formatParenthesizedList(region, doc); |
34 | for (var argument : assertion.getArguments()) { | ||
35 | doc.format(argument); | ||
36 | } | ||
37 | var colon = region.keyword(":"); | ||
38 | boolean abbreviated = colon == null; | ||
39 | if (!abbreviated) { | ||
40 | doc.prepend(colon, this::noSpace); | ||
41 | doc.append(colon, this::oneSpace); | ||
42 | } | ||
40 | var value = assertion.getValue(); | 43 | var value = assertion.getValue(); |
41 | if (value != null) { | 44 | if (value != null) { |
42 | doc.append(value, this::noSpace); | 45 | var valueRegion = regionForEObject(value); |
46 | // Avoid clash between noSpace after ASSERTION_DEFAULT and noSpace after the 0-length region | ||
47 | // for a true LogicAssertionValue if the abbreviated form of assertion (no : operator) is used. | ||
48 | if (abbreviated && valueRegion != null && valueRegion.getLength() > 0) { | ||
49 | doc.append(value, this::noSpace); | ||
50 | } | ||
43 | doc.format(value); | 51 | doc.format(value); |
44 | } | 52 | } |
45 | doc.prepend(region.keyword("."), this::noSpace); | 53 | doc.prepend(region.keyword("."), this::noSpace); |
46 | for (var argument : assertion.getArguments()) { | ||
47 | doc.format(argument); | ||
48 | } | ||
49 | } | ||
50 | |||
51 | protected void format(LogicAssertionValue assertionValue, IFormattableDocument doc) { | ||
52 | var region = regionFor(assertionValue); | ||
53 | doc.prepend(region.keyword(":"), this::noSpace); | ||
54 | doc.append(region.keyword(":"), this::oneSpace); | ||
55 | } | ||
56 | |||
57 | protected void format(ExprAssertionValue assertionValue, IFormattableDocument doc) { | ||
58 | var region = regionFor(assertionValue); | ||
59 | doc.surround(region.keyword("="), this::oneSpace); | ||
60 | doc.surround(region.keyword("in"), this::oneSpace); | ||
61 | var body = assertionValue.getBody(); | ||
62 | if (body != null) { | ||
63 | doc.format(body); | ||
64 | } | ||
65 | } | 54 | } |
66 | 55 | ||
67 | protected void format(ClassDeclaration classDeclaration, IFormattableDocument doc) { | 56 | protected void format(ClassDeclaration classDeclaration, IFormattableDocument doc) { |
@@ -128,7 +117,7 @@ public class ProblemFormatter extends AbstractJavaFormatter { | |||
128 | protected void format(IndividualDeclaration individualDeclaration, IFormattableDocument doc) { | 117 | protected void format(IndividualDeclaration individualDeclaration, IFormattableDocument doc) { |
129 | surroundNewLines(doc, individualDeclaration, this::singleNewLine); | 118 | surroundNewLines(doc, individualDeclaration, this::singleNewLine); |
130 | var region = regionFor(individualDeclaration); | 119 | var region = regionFor(individualDeclaration); |
131 | doc.append(region.keyword("individual"), this::oneSpace); | 120 | doc.append(region.keyword("indiv"), this::oneSpace); |
132 | formatList(region, ",", doc); | 121 | formatList(region, ",", doc); |
133 | doc.prepend(region.keyword("."), this::noSpace); | 122 | doc.prepend(region.keyword("."), this::noSpace); |
134 | } | 123 | } |
diff --git a/subprojects/language/src/main/java/tools/refinery/language/serializer/PreferShortAssertionsProblemSemanticSequencer.java b/subprojects/language/src/main/java/tools/refinery/language/serializer/PreferShortAssertionsProblemSemanticSequencer.java index c51a5e28..27ce1521 100644 --- a/subprojects/language/src/main/java/tools/refinery/language/serializer/PreferShortAssertionsProblemSemanticSequencer.java +++ b/subprojects/language/src/main/java/tools/refinery/language/serializer/PreferShortAssertionsProblemSemanticSequencer.java | |||
@@ -5,7 +5,7 @@ import org.eclipse.xtext.serializer.ISerializationContext; | |||
5 | import org.eclipse.xtext.serializer.sequencer.ITransientValueService.ListTransient; | 5 | import org.eclipse.xtext.serializer.sequencer.ITransientValueService.ListTransient; |
6 | import org.eclipse.xtext.serializer.sequencer.ITransientValueService.ValueTransient; | 6 | import org.eclipse.xtext.serializer.sequencer.ITransientValueService.ValueTransient; |
7 | import tools.refinery.language.model.problem.Assertion; | 7 | import tools.refinery.language.model.problem.Assertion; |
8 | import tools.refinery.language.model.problem.LogicAssertionValue; | 8 | import tools.refinery.language.model.problem.LogicConstant; |
9 | import tools.refinery.language.model.problem.LogicValue; | 9 | import tools.refinery.language.model.problem.LogicValue; |
10 | import tools.refinery.language.model.problem.ProblemPackage; | 10 | import tools.refinery.language.model.problem.ProblemPackage; |
11 | import tools.refinery.language.services.ProblemGrammarAccess; | 11 | import tools.refinery.language.services.ProblemGrammarAccess; |
@@ -17,8 +17,8 @@ public class PreferShortAssertionsProblemSemanticSequencer extends ProblemSemant | |||
17 | @Override | 17 | @Override |
18 | protected void sequence_Assertion(ISerializationContext context, Assertion semanticObject) { | 18 | protected void sequence_Assertion(ISerializationContext context, Assertion semanticObject) { |
19 | if (semanticObject.isDefault() || | 19 | if (semanticObject.isDefault() || |
20 | !(semanticObject.getValue() instanceof LogicAssertionValue logicAssertionValue) || | 20 | !(semanticObject.getValue() instanceof LogicConstant logicConstant) || |
21 | logicAssertionValue.getLogicValue() == LogicValue.ERROR) { | 21 | logicConstant.getLogicValue() == LogicValue.ERROR) { |
22 | super.sequence_Assertion(context, semanticObject); | 22 | super.sequence_Assertion(context, semanticObject); |
23 | return; | 23 | return; |
24 | } | 24 | } |
@@ -34,7 +34,7 @@ public class PreferShortAssertionsProblemSemanticSequencer extends ProblemSemant | |||
34 | } | 34 | } |
35 | var feeder = createSequencerFeeder(context, semanticObject); | 35 | var feeder = createSequencerFeeder(context, semanticObject); |
36 | var access = grammarAccess.getAssertionAccess(); | 36 | var access = grammarAccess.getAssertionAccess(); |
37 | feeder.accept(access.getValueShortLogicAssertionValueParserRuleCall_1_1_0_0(), logicAssertionValue); | 37 | feeder.accept(access.getValueShortLogicConstantParserRuleCall_1_1_0_0(), logicConstant); |
38 | feeder.accept(access.getRelationRelationQualifiedNameParserRuleCall_1_1_1_0_1(), semanticObject.getRelation()); | 38 | feeder.accept(access.getRelationRelationQualifiedNameParserRuleCall_1_1_1_0_1(), semanticObject.getRelation()); |
39 | var iterator = semanticObject.getArguments().iterator(); | 39 | var iterator = semanticObject.getArguments().iterator(); |
40 | if (iterator.hasNext()) { | 40 | if (iterator.hasNext()) { |
diff --git a/subprojects/language/src/main/java/tools/refinery/language/utils/SymbolCollector.java b/subprojects/language/src/main/java/tools/refinery/language/utils/SymbolCollector.java index 5412f620..65167ed6 100644 --- a/subprojects/language/src/main/java/tools/refinery/language/utils/SymbolCollector.java +++ b/subprojects/language/src/main/java/tools/refinery/language/utils/SymbolCollector.java | |||
@@ -242,7 +242,7 @@ class SymbolCollector { | |||
242 | } | 242 | } |
243 | assertion.getArguments().add(argument); | 243 | assertion.getArguments().add(argument); |
244 | } | 244 | } |
245 | var value = ProblemFactory.eINSTANCE.createLogicAssertionValue(); | 245 | var value = ProblemFactory.eINSTANCE.createLogicConstant(); |
246 | value.setLogicValue(logicValue); | 246 | value.setLogicValue(logicValue); |
247 | assertion.setValue(value); | 247 | assertion.setValue(value); |
248 | collectAssertion(assertion); | 248 | collectAssertion(assertion); |
diff --git a/subprojects/language/src/test/java/tools/refinery/language/tests/ProblemParsingTest.java b/subprojects/language/src/test/java/tools/refinery/language/tests/ProblemParsingTest.java index e0dee496..58daa365 100644 --- a/subprojects/language/src/test/java/tools/refinery/language/tests/ProblemParsingTest.java +++ b/subprojects/language/src/test/java/tools/refinery/language/tests/ProblemParsingTest.java | |||
@@ -24,30 +24,30 @@ class ProblemParsingTest { | |||
24 | } | 24 | } |
25 | 25 | ||
26 | class Person { | 26 | class Person { |
27 | refers Person[0..*] children opposite parent | 27 | Person[0..*] children opposite parent |
28 | refers Person[0..1] parent opposite children | 28 | Person[0..1] parent opposite children |
29 | int age | 29 | int age |
30 | refers TaxStatus taxStatus | 30 | TaxStatus taxStatus |
31 | } | 31 | } |
32 | 32 | ||
33 | enum TaxStatus { | 33 | enum TaxStatus { |
34 | child, student, adult, retired | 34 | CHILD, STUDENT, ADULT, RETIRED |
35 | } | 35 | } |
36 | 36 | ||
37 | % A child cannot have any dependents. | 37 | % A child cannot have any dependents. |
38 | error invalidTaxStatus(Person p) <-> | 38 | error invalidTaxStatus(Person p) <-> |
39 | taxStatus(p, child), children(p, _q). | 39 | taxStatus(p, CHILD), children(p, _q). |
40 | 40 | ||
41 | individual family. | 41 | indiv family. |
42 | Family(family). | 42 | Family(family). |
43 | members(family, anne): true. | 43 | members(family, anne): true. |
44 | members(family, bob). | 44 | members(family, bob). |
45 | members(family, ciri). | 45 | members(family, ciri). |
46 | children(anne, ciri). | 46 | children(anne, ciri). |
47 | ?children(bob, ciri). | 47 | ?children(bob, ciri). |
48 | taxStatus(anne, adult). | 48 | taxStatus(anne, ADULT). |
49 | age(bob) in 21..35. | 49 | age(bob): 21..35. |
50 | age(ciri) = 10. | 50 | age(ciri): 10. |
51 | """); | 51 | """); |
52 | assertThat(problem.errors(), empty()); | 52 | assertThat(problem.errors(), empty()); |
53 | } | 53 | } |
diff --git a/subprojects/language/src/test/java/tools/refinery/language/tests/formatting2/ProblemFormatterTest.java b/subprojects/language/src/test/java/tools/refinery/language/tests/formatting2/ProblemFormatterTest.java index a6e38130..6e0802ca 100644 --- a/subprojects/language/src/test/java/tools/refinery/language/tests/formatting2/ProblemFormatterTest.java +++ b/subprojects/language/src/test/java/tools/refinery/language/tests/formatting2/ProblemFormatterTest.java | |||
@@ -179,7 +179,7 @@ class ProblemFormatterTest { | |||
179 | 179 | ||
180 | @Test | 180 | @Test |
181 | void individualDeclarationTest() { | 181 | void individualDeclarationTest() { |
182 | testFormatter(" individual a , b . ", "individual a, b.\n"); | 182 | testFormatter(" indiv a , b . ", "indiv a, b.\n"); |
183 | } | 183 | } |
184 | 184 | ||
185 | @Test | 185 | @Test |
diff --git a/subprojects/language/src/test/java/tools/refinery/language/tests/parser/antlr/TransitiveClosureParserTest.java b/subprojects/language/src/test/java/tools/refinery/language/tests/parser/antlr/TransitiveClosureParserTest.java index 6e702720..65ceb45f 100644 --- a/subprojects/language/src/test/java/tools/refinery/language/tests/parser/antlr/TransitiveClosureParserTest.java +++ b/subprojects/language/src/test/java/tools/refinery/language/tests/parser/antlr/TransitiveClosureParserTest.java | |||
@@ -24,8 +24,8 @@ class TransitiveClosureParserTest { | |||
24 | @Test | 24 | @Test |
25 | void binaryAddOperatorTest() { | 25 | void binaryAddOperatorTest() { |
26 | var problem = parseHelper.parse(""" | 26 | var problem = parseHelper.parse(""" |
27 | int a(). | 27 | fn int a(). |
28 | int b(). | 28 | fn int b(). |
29 | pred foo() <-> a() + (b()) > 10. | 29 | pred foo() <-> a() + (b()) > 10. |
30 | """); | 30 | """); |
31 | assertThat(problem.errors(), empty()); | 31 | assertThat(problem.errors(), empty()); |
diff --git a/subprojects/language/src/test/java/tools/refinery/language/tests/scoping/NodeScopingTest.java b/subprojects/language/src/test/java/tools/refinery/language/tests/scoping/NodeScopingTest.java index 2fd647e5..fa462691 100644 --- a/subprojects/language/src/test/java/tools/refinery/language/tests/scoping/NodeScopingTest.java +++ b/subprojects/language/src/test/java/tools/refinery/language/tests/scoping/NodeScopingTest.java | |||
@@ -67,7 +67,7 @@ class NodeScopingTest { | |||
67 | @MethodSource("individualNodeReferenceSource") | 67 | @MethodSource("individualNodeReferenceSource") |
68 | void individualNodeInAssertionTest(String qualifiedNamePrefix, boolean namedProblem) { | 68 | void individualNodeInAssertionTest(String qualifiedNamePrefix, boolean namedProblem) { |
69 | var problem = parse(""" | 69 | var problem = parse(""" |
70 | individual a, b. | 70 | indiv a, b. |
71 | pred predicate(node x, node y) <-> node(x). | 71 | pred predicate(node x, node y) <-> node(x). |
72 | predicate({PARAM}a, {PARAM}a). | 72 | predicate({PARAM}a, {PARAM}a). |
73 | ?predicate({PARAM}a, {PARAM}b). | 73 | ?predicate({PARAM}a, {PARAM}b). |
@@ -84,7 +84,7 @@ class NodeScopingTest { | |||
84 | @MethodSource("individualNodeReferenceSource") | 84 | @MethodSource("individualNodeReferenceSource") |
85 | void individualNodeInPredicateTest(String qualifiedNamePrefix, boolean namedProblem) { | 85 | void individualNodeInPredicateTest(String qualifiedNamePrefix, boolean namedProblem) { |
86 | var problem = parse(""" | 86 | var problem = parse(""" |
87 | individual b. | 87 | indiv b. |
88 | pred predicate(node a) <-> node({PARAM}b). | 88 | pred predicate(node a) <-> node({PARAM}b). |
89 | """); | 89 | """); |
90 | assertThat(problem.errors(), empty()); | 90 | assertThat(problem.errors(), empty()); |
diff --git a/subprojects/language/src/test/java/tools/refinery/language/tests/serializer/ProblemSerializerTest.java b/subprojects/language/src/test/java/tools/refinery/language/tests/serializer/ProblemSerializerTest.java index 5024fb45..4a18704a 100644 --- a/subprojects/language/src/test/java/tools/refinery/language/tests/serializer/ProblemSerializerTest.java +++ b/subprojects/language/src/test/java/tools/refinery/language/tests/serializer/ProblemSerializerTest.java | |||
@@ -59,7 +59,7 @@ class ProblemSerializerTest { | |||
59 | assertSerializedResult(""" | 59 | assertSerializedResult(""" |
60 | pred foo(node p). | 60 | pred foo(node p). |
61 | 61 | ||
62 | individual a. | 62 | indiv a. |
63 | """ + serializedAssertion + "\n"); | 63 | """ + serializedAssertion + "\n"); |
64 | } | 64 | } |
65 | 65 | ||
@@ -82,7 +82,7 @@ class ProblemSerializerTest { | |||
82 | assertSerializedResult(""" | 82 | assertSerializedResult(""" |
83 | pred foo(node p). | 83 | pred foo(node p). |
84 | 84 | ||
85 | individual a. | 85 | indiv a. |
86 | default foo(a):\040""" + valueAsString + ".\n"); | 86 | default foo(a):\040""" + valueAsString + ".\n"); |
87 | } | 87 | } |
88 | 88 | ||
@@ -149,7 +149,7 @@ class ProblemSerializerTest { | |||
149 | var argument = ProblemFactory.eINSTANCE.createNodeAssertionArgument(); | 149 | var argument = ProblemFactory.eINSTANCE.createNodeAssertionArgument(); |
150 | argument.setNode(node); | 150 | argument.setNode(node); |
151 | assertion.getArguments().add(argument); | 151 | assertion.getArguments().add(argument); |
152 | var value = ProblemFactory.eINSTANCE.createLogicAssertionValue(); | 152 | var value = ProblemFactory.eINSTANCE.createLogicConstant(); |
153 | value.setLogicValue(logicValue); | 153 | value.setLogicValue(logicValue); |
154 | assertion.setValue(value); | 154 | assertion.setValue(value); |
155 | assertion.setDefault(isDefault); | 155 | assertion.setDefault(isDefault); |
diff --git a/subprojects/language/src/test/java/tools/refinery/language/tests/utils/SymbolCollectorTest.java b/subprojects/language/src/test/java/tools/refinery/language/tests/utils/SymbolCollectorTest.java index 66b7f1ab..af6de37f 100644 --- a/subprojects/language/src/test/java/tools/refinery/language/tests/utils/SymbolCollectorTest.java +++ b/subprojects/language/src/test/java/tools/refinery/language/tests/utils/SymbolCollectorTest.java | |||
@@ -45,7 +45,7 @@ class SymbolCollectorTest { | |||
45 | @Test | 45 | @Test |
46 | void individualNodeTest() { | 46 | void individualNodeTest() { |
47 | var problem = parseHelper.parse(""" | 47 | var problem = parseHelper.parse(""" |
48 | individual a. | 48 | indiv a. |
49 | """); | 49 | """); |
50 | var collectedSymbols = desugarer.collectSymbols(problem.get()); | 50 | var collectedSymbols = desugarer.collectSymbols(problem.get()); |
51 | var node = problem.individualNode("a"); | 51 | var node = problem.individualNode("a"); |