From cd1cd0552c92ab5365f087dfa437478bf0087a09 Mon Sep 17 00:00:00 2001 From: Janik Rapp Date: Thu, 21 Aug 2025 16:57:36 +0200 Subject: [PATCH 1/4] add var keyword alternative to LocalVariableDeclaration and LambdaParameter --- javaDSL/src/main/grammars/de/monticore/java/JavaDSL.mc4 | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/javaDSL/src/main/grammars/de/monticore/java/JavaDSL.mc4 b/javaDSL/src/main/grammars/de/monticore/java/JavaDSL.mc4 index a30449f4..a04f374a 100644 --- a/javaDSL/src/main/grammars/de/monticore/java/JavaDSL.mc4 +++ b/javaDSL/src/main/grammars/de/monticore/java/JavaDSL.mc4 @@ -371,6 +371,14 @@ ClassCreatorRest = Arguments ClassBody? ; +// Add support for 'var' +@Override +LocalVariableDeclaration + = MCModifier* ([key("var")] | MCType) (VariableDeclarator || ",")+ ; + +@Override +LambdaParameter implements Variable = ([key("var")] | MCType)? Name; + /* * TODO Remove this * This is a workaround to a questionable behavior in the core grammar JavaLight From 28bf8f3b5d260503f132b50c59643984ad4b0d8a Mon Sep 17 00:00:00 2001 From: Janik Rapp Date: Thu, 21 Aug 2025 16:57:55 +0200 Subject: [PATCH 2/4] add test with var variables --- .../java/ParsableAndCompilableModelsTest.java | 1 + .../simpleTestClasses/VarVariables.java | 20 +++++++++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 javaDSL/src/test/resources/parsableAndCompilableModels/simpleTestClasses/VarVariables.java diff --git a/javaDSL/src/test/java/de/monticore/java/ParsableAndCompilableModelsTest.java b/javaDSL/src/test/java/de/monticore/java/ParsableAndCompilableModelsTest.java index 8a757cfd..ff64c706 100644 --- a/javaDSL/src/test/java/de/monticore/java/ParsableAndCompilableModelsTest.java +++ b/javaDSL/src/test/java/de/monticore/java/ParsableAndCompilableModelsTest.java @@ -20,6 +20,7 @@ public class ParsableAndCompilableModelsTest extends AbstractTest { "src/test/resources/parsableAndCompilableModels/simpleTestClasses/types/SimpleInterfaceTestModel.java", "src/test/resources/parsableAndCompilableModels/simpleTestClasses/EmptyClass.java", "src/test/resources/parsableAndCompilableModels/simpleTestClasses/HelloWorld.java", + "src/test/resources/parsableAndCompilableModels/simpleTestClasses/VarVariables.java", "src/test/resources/parsableAndCompilableModels/simpleTestClasses/OneFieldClass.java", "src/test/resources/parsableAndCompilableModels/simpleTestClasses/QualifiedNameTestClass.java", // Stressful package diff --git a/javaDSL/src/test/resources/parsableAndCompilableModels/simpleTestClasses/VarVariables.java b/javaDSL/src/test/resources/parsableAndCompilableModels/simpleTestClasses/VarVariables.java new file mode 100644 index 00000000..396ce62e --- /dev/null +++ b/javaDSL/src/test/resources/parsableAndCompilableModels/simpleTestClasses/VarVariables.java @@ -0,0 +1,20 @@ +/* (c) https://github.com/MontiCore/monticore */ + +package simpleTestClasses; + +import java.util.function.Function; + +public class VarVariables { + public boolean varTest() { + var x = 42; + final var y = 42 + 1; + + int var = 42 + 2; + + for (var i = 0; i < x; i++) { + var j = i * 2; + } + + Function q = (var p) -> "Hello " + p; + } +} From 04e154148e47dca160df3c5aa50e2a3735284867 Mon Sep 17 00:00:00 2001 From: Janik Rapp Date: Thu, 21 Aug 2025 16:58:11 +0200 Subject: [PATCH 3/4] fix ref-code-adaption --- .../codeAdaption/handler/BasicUpdateHandler.java | 2 +- .../codeAdaption/matcher/VariableMatcher.java | 2 +- .../matcher/annotMatcher/AnnotVariableMatcher.java | 2 +- .../matcher/compMatcher/CompVariableMatcher.java | 2 +- .../matcher/errorMatcher/ErrorVariableMatcher.java | 2 +- .../ignoreMatcher/IgnoreVariableMatcher.java | 2 +- .../matcher/infixMatcher/InfixVariableMatcher.java | 2 +- .../codeAdaption/updater/CodeUpdater.java | 2 +- .../updater/regexUpdater/RegexUpdater.java | 2 +- .../updater/spoonUpdater/SpoonUpdater.java | 2 +- .../utils/visitors/AnnotationRemover.java | 2 +- .../utils/visitors/JavaAstElemCollector.java | 8 +++----- .../codeAdaption/validator/CodeValidator.java | 14 ++++---------- .../validator/cocos/OneVarInDeclaration.java | 7 +++---- .../validator/cocos/ValidTemplate.java | 6 +++--- .../codeAdaption/matcher/AnnotMatcherTest.java | 2 +- .../codeAdaption/matcher/InfixMatcherTest.java | 2 +- .../codeAdaption/validator/CodeValidatorTest.java | 2 +- 18 files changed, 27 insertions(+), 36 deletions(-) diff --git a/ref-code-adaptation/src/main/java/de/monticore/codeAdaption/handler/BasicUpdateHandler.java b/ref-code-adaptation/src/main/java/de/monticore/codeAdaption/handler/BasicUpdateHandler.java index 24079bc8..fe51ba18 100644 --- a/ref-code-adaptation/src/main/java/de/monticore/codeAdaption/handler/BasicUpdateHandler.java +++ b/ref-code-adaptation/src/main/java/de/monticore/codeAdaption/handler/BasicUpdateHandler.java @@ -12,12 +12,12 @@ import de.monticore.codeAdaption.validator.CodeValidator; import de.monticore.java.javadsl.JavaDSLMill; import de.monticore.java.javadsl._ast.ASTFieldDeclaration; +import de.monticore.java.javadsl._ast.ASTLocalVariableDeclaration; import de.monticore.java.javadsl._ast.ASTOrdinaryCompilationUnit; import de.monticore.java.javadsl._ast.ASTTypeDeclaration; import de.monticore.java.javadsl._visitor.JavaDSLTraverser; import de.monticore.javalight._ast.ASTMethodDeclaration; import de.monticore.statements.mccommonstatements._ast.ASTFormalParameter; -import de.monticore.statements.mcvardeclarationstatements._ast.ASTLocalVariableDeclaration; import de.monticore.symbols.oosymbols._symboltable.FieldSymbol; import de.monticore.symboltable.ISymbol; import de.monticore.types.mcbasictypes._ast.ASTMCType; diff --git a/ref-code-adaptation/src/main/java/de/monticore/codeAdaption/matcher/VariableMatcher.java b/ref-code-adaptation/src/main/java/de/monticore/codeAdaption/matcher/VariableMatcher.java index 344ee407..72346a1c 100644 --- a/ref-code-adaptation/src/main/java/de/monticore/codeAdaption/matcher/VariableMatcher.java +++ b/ref-code-adaptation/src/main/java/de/monticore/codeAdaption/matcher/VariableMatcher.java @@ -1,10 +1,10 @@ package de.monticore.codeAdaption.matcher; import de.monticore.cdbasis._ast.ASTCDCompilationUnit; +import de.monticore.java.javadsl._ast.ASTLocalVariableDeclaration; import de.monticore.java.javadsl._ast.ASTTypeDeclaration; import de.monticore.javalight._ast.ASTMethodDeclaration; import de.monticore.statements.mccommonstatements._ast.ASTFormalParameter; -import de.monticore.statements.mcvardeclarationstatements._ast.ASTLocalVariableDeclaration; import java.util.Optional; public interface VariableMatcher { diff --git a/ref-code-adaptation/src/main/java/de/monticore/codeAdaption/matcher/annotMatcher/AnnotVariableMatcher.java b/ref-code-adaptation/src/main/java/de/monticore/codeAdaption/matcher/annotMatcher/AnnotVariableMatcher.java index 02d8b019..3da61422 100644 --- a/ref-code-adaptation/src/main/java/de/monticore/codeAdaption/matcher/annotMatcher/AnnotVariableMatcher.java +++ b/ref-code-adaptation/src/main/java/de/monticore/codeAdaption/matcher/annotMatcher/AnnotVariableMatcher.java @@ -5,10 +5,10 @@ import de.monticore.cdbasis._ast.ASTCDCompilationUnit; import de.monticore.codeAdaption.matcher.CodeMatching; import de.monticore.codeAdaption.matcher.VariableMatcher; +import de.monticore.java.javadsl._ast.ASTLocalVariableDeclaration; import de.monticore.java.javadsl._ast.ASTTypeDeclaration; import de.monticore.javalight._ast.ASTMethodDeclaration; import de.monticore.statements.mccommonstatements._ast.ASTFormalParameter; -import de.monticore.statements.mcvardeclarationstatements._ast.ASTLocalVariableDeclaration; import java.util.Optional; /*** diff --git a/ref-code-adaptation/src/main/java/de/monticore/codeAdaption/matcher/compMatcher/CompVariableMatcher.java b/ref-code-adaptation/src/main/java/de/monticore/codeAdaption/matcher/compMatcher/CompVariableMatcher.java index 141846ed..a6d23994 100644 --- a/ref-code-adaptation/src/main/java/de/monticore/codeAdaption/matcher/compMatcher/CompVariableMatcher.java +++ b/ref-code-adaptation/src/main/java/de/monticore/codeAdaption/matcher/compMatcher/CompVariableMatcher.java @@ -3,10 +3,10 @@ import de.monticore.cdbasis._ast.ASTCDCompilationUnit; import de.monticore.codeAdaption.matcher.CodeMatching; import de.monticore.codeAdaption.matcher.VariableMatcher; +import de.monticore.java.javadsl._ast.ASTLocalVariableDeclaration; import de.monticore.java.javadsl._ast.ASTTypeDeclaration; import de.monticore.javalight._ast.ASTMethodDeclaration; import de.monticore.statements.mccommonstatements._ast.ASTFormalParameter; -import de.monticore.statements.mcvardeclarationstatements._ast.ASTLocalVariableDeclaration; import java.util.List; import java.util.Optional; diff --git a/ref-code-adaptation/src/main/java/de/monticore/codeAdaption/matcher/errorMatcher/ErrorVariableMatcher.java b/ref-code-adaptation/src/main/java/de/monticore/codeAdaption/matcher/errorMatcher/ErrorVariableMatcher.java index 9c4df883..e77ea23c 100644 --- a/ref-code-adaptation/src/main/java/de/monticore/codeAdaption/matcher/errorMatcher/ErrorVariableMatcher.java +++ b/ref-code-adaptation/src/main/java/de/monticore/codeAdaption/matcher/errorMatcher/ErrorVariableMatcher.java @@ -4,10 +4,10 @@ import de.monticore.codeAdaption.matcher.CodeMatching; import de.monticore.codeAdaption.matcher.VariableMatcher; import de.monticore.codeAdaption.utils.AdapterUtils; +import de.monticore.java.javadsl._ast.ASTLocalVariableDeclaration; import de.monticore.java.javadsl._ast.ASTTypeDeclaration; import de.monticore.javalight._ast.ASTMethodDeclaration; import de.monticore.statements.mccommonstatements._ast.ASTFormalParameter; -import de.monticore.statements.mcvardeclarationstatements._ast.ASTLocalVariableDeclaration; import de.se_rwth.commons.logging.Log; import java.util.Optional; diff --git a/ref-code-adaptation/src/main/java/de/monticore/codeAdaption/matcher/ignoreMatcher/IgnoreVariableMatcher.java b/ref-code-adaptation/src/main/java/de/monticore/codeAdaption/matcher/ignoreMatcher/IgnoreVariableMatcher.java index 4eb9fec4..9c58b1f3 100644 --- a/ref-code-adaptation/src/main/java/de/monticore/codeAdaption/matcher/ignoreMatcher/IgnoreVariableMatcher.java +++ b/ref-code-adaptation/src/main/java/de/monticore/codeAdaption/matcher/ignoreMatcher/IgnoreVariableMatcher.java @@ -3,10 +3,10 @@ import de.monticore.cdbasis._ast.ASTCDCompilationUnit; import de.monticore.codeAdaption.matcher.CodeMatching; import de.monticore.codeAdaption.matcher.VariableMatcher; +import de.monticore.java.javadsl._ast.ASTLocalVariableDeclaration; import de.monticore.java.javadsl._ast.ASTTypeDeclaration; import de.monticore.javalight._ast.ASTMethodDeclaration; import de.monticore.statements.mccommonstatements._ast.ASTFormalParameter; -import de.monticore.statements.mcvardeclarationstatements._ast.ASTLocalVariableDeclaration; import java.util.Optional; /*** diff --git a/ref-code-adaptation/src/main/java/de/monticore/codeAdaption/matcher/infixMatcher/InfixVariableMatcher.java b/ref-code-adaptation/src/main/java/de/monticore/codeAdaption/matcher/infixMatcher/InfixVariableMatcher.java index 57c78a26..8f5b46d3 100644 --- a/ref-code-adaptation/src/main/java/de/monticore/codeAdaption/matcher/infixMatcher/InfixVariableMatcher.java +++ b/ref-code-adaptation/src/main/java/de/monticore/codeAdaption/matcher/infixMatcher/InfixVariableMatcher.java @@ -10,7 +10,7 @@ import de.monticore.java.javadsl._ast.ASTTypeDeclaration; import de.monticore.javalight._ast.ASTMethodDeclaration; import de.monticore.statements.mccommonstatements._ast.ASTFormalParameter; -import de.monticore.statements.mcvardeclarationstatements._ast.ASTLocalVariableDeclaration; +import de.monticore.java.javadsl._ast.ASTLocalVariableDeclaration; import de.monticore.symboltable.ISymbol; import java.util.List; import java.util.Optional; diff --git a/ref-code-adaptation/src/main/java/de/monticore/codeAdaption/updater/CodeUpdater.java b/ref-code-adaptation/src/main/java/de/monticore/codeAdaption/updater/CodeUpdater.java index 51c3854b..c804b8ae 100644 --- a/ref-code-adaptation/src/main/java/de/monticore/codeAdaption/updater/CodeUpdater.java +++ b/ref-code-adaptation/src/main/java/de/monticore/codeAdaption/updater/CodeUpdater.java @@ -5,7 +5,7 @@ import de.monticore.java.javadsl._ast.ASTTypeDeclaration; import de.monticore.javalight._ast.ASTMethodDeclaration; import de.monticore.statements.mccommonstatements._ast.ASTFormalParameter; -import de.monticore.statements.mcvardeclarationstatements._ast.ASTLocalVariableDeclaration; +import de.monticore.java.javadsl._ast.ASTLocalVariableDeclaration; import de.monticore.types.mcbasictypes._ast.ASTMCType; import java.io.File; import java.nio.file.Path; diff --git a/ref-code-adaptation/src/main/java/de/monticore/codeAdaption/updater/regexUpdater/RegexUpdater.java b/ref-code-adaptation/src/main/java/de/monticore/codeAdaption/updater/regexUpdater/RegexUpdater.java index 72bf6815..5e4e4406 100644 --- a/ref-code-adaptation/src/main/java/de/monticore/codeAdaption/updater/regexUpdater/RegexUpdater.java +++ b/ref-code-adaptation/src/main/java/de/monticore/codeAdaption/updater/regexUpdater/RegexUpdater.java @@ -7,7 +7,7 @@ import de.monticore.java.javadsl._ast.ASTTypeDeclaration; import de.monticore.javalight._ast.ASTMethodDeclaration; import de.monticore.statements.mccommonstatements._ast.ASTFormalParameter; -import de.monticore.statements.mcvardeclarationstatements._ast.ASTLocalVariableDeclaration; +import de.monticore.java.javadsl._ast.ASTLocalVariableDeclaration; import de.monticore.types.mcbasictypes._ast.ASTMCType; import java.io.File; import java.nio.file.Path; diff --git a/ref-code-adaptation/src/main/java/de/monticore/codeAdaption/updater/spoonUpdater/SpoonUpdater.java b/ref-code-adaptation/src/main/java/de/monticore/codeAdaption/updater/spoonUpdater/SpoonUpdater.java index b068d516..160735d1 100644 --- a/ref-code-adaptation/src/main/java/de/monticore/codeAdaption/updater/spoonUpdater/SpoonUpdater.java +++ b/ref-code-adaptation/src/main/java/de/monticore/codeAdaption/updater/spoonUpdater/SpoonUpdater.java @@ -9,7 +9,7 @@ import de.monticore.java.javadsl._ast.ASTTypeDeclaration; import de.monticore.javalight._ast.ASTMethodDeclaration; import de.monticore.statements.mccommonstatements._ast.ASTFormalParameter; -import de.monticore.statements.mcvardeclarationstatements._ast.ASTLocalVariableDeclaration; +import de.monticore.java.javadsl._ast.ASTLocalVariableDeclaration; import de.monticore.types.mcbasictypes._ast.ASTMCType; import java.io.File; import java.nio.file.Path; diff --git a/ref-code-adaptation/src/main/java/de/monticore/codeAdaption/utils/visitors/AnnotationRemover.java b/ref-code-adaptation/src/main/java/de/monticore/codeAdaption/utils/visitors/AnnotationRemover.java index 889b7e2c..440d6d4b 100644 --- a/ref-code-adaptation/src/main/java/de/monticore/codeAdaption/utils/visitors/AnnotationRemover.java +++ b/ref-code-adaptation/src/main/java/de/monticore/codeAdaption/utils/visitors/AnnotationRemover.java @@ -11,7 +11,7 @@ import de.monticore.statements.mccommonstatements._ast.ASTJavaModifier; import de.monticore.statements.mccommonstatements._visitor.MCCommonStatementsVisitor2; import de.monticore.statements.mcstatementsbasis._ast.ASTMCModifier; -import de.monticore.statements.mcvardeclarationstatements._ast.ASTLocalVariableDeclaration; +import de.monticore.java.javadsl._ast.ASTLocalVariableDeclaration; import de.monticore.statements.mcvardeclarationstatements._visitor.MCVarDeclarationStatementsVisitor2; import java.util.List; import java.util.Optional; diff --git a/ref-code-adaptation/src/main/java/de/monticore/codeAdaption/utils/visitors/JavaAstElemCollector.java b/ref-code-adaptation/src/main/java/de/monticore/codeAdaption/utils/visitors/JavaAstElemCollector.java index ed4462dd..a2b9035d 100644 --- a/ref-code-adaptation/src/main/java/de/monticore/codeAdaption/utils/visitors/JavaAstElemCollector.java +++ b/ref-code-adaptation/src/main/java/de/monticore/codeAdaption/utils/visitors/JavaAstElemCollector.java @@ -8,8 +8,6 @@ import de.monticore.javalight._visitor.JavaLightVisitor2; import de.monticore.statements.mccommonstatements._ast.ASTFormalParameter; import de.monticore.statements.mccommonstatements._visitor.MCCommonStatementsVisitor2; -import de.monticore.statements.mcvardeclarationstatements._ast.ASTLocalVariableDeclaration; -import de.monticore.statements.mcvardeclarationstatements._visitor.MCVarDeclarationStatementsVisitor2; import de.monticore.types.mcbasictypes._ast.ASTMCType; import java.util.*; @@ -123,8 +121,8 @@ public void visit(ASTMethodDeclaration node) { JavaDSLTraverser traverser = JavaDSLMill.traverser(); - MCVarDeclarationStatementsVisitor2 localVarCollector = - new MCVarDeclarationStatementsVisitor2() { + JavaDSLVisitor2 localVarCollector = + new JavaDSLVisitor2() { @Override public void visit(ASTLocalVariableDeclaration node) { localVars.add(node); @@ -139,7 +137,7 @@ public void visit(ASTFormalParameter node) { } }; - traverser.add4MCVarDeclarationStatements(localVarCollector); + traverser.add4JavaDSL(localVarCollector); traverser.add4MCCommonStatements(formalParamVisitor); node.accept(traverser); localVarsMap.put(node, localVars); diff --git a/ref-code-adaptation/src/main/java/de/monticore/codeAdaption/validator/CodeValidator.java b/ref-code-adaptation/src/main/java/de/monticore/codeAdaption/validator/CodeValidator.java index 4c45c855..cb309d78 100644 --- a/ref-code-adaptation/src/main/java/de/monticore/codeAdaption/validator/CodeValidator.java +++ b/ref-code-adaptation/src/main/java/de/monticore/codeAdaption/validator/CodeValidator.java @@ -32,20 +32,16 @@ import de.monticore.codeAdaption.validator.cocos.ValidTemplate; import de.monticore.java.javadsl.JavaDSLMill; import de.monticore.java.javadsl._ast.ASTFieldDeclaration; +import de.monticore.java.javadsl._ast.ASTLocalVariableDeclaration; import de.monticore.java.javadsl._ast.ASTOrdinaryCompilationUnit; import de.monticore.java.javadsl._ast.ASTTypeDeclaration; -import de.monticore.java.javadsl._cocos.JavaDSLASTFieldDeclarationCoCo; -import de.monticore.java.javadsl._cocos.JavaDSLASTJavaAnnotationCoCo; -import de.monticore.java.javadsl._cocos.JavaDSLASTTypeDeclarationCoCo; -import de.monticore.java.javadsl._cocos.JavaDSLCoCoChecker; +import de.monticore.java.javadsl._cocos.*; import de.monticore.java.javadsl._visitor.JavaDSLTraverser; import de.monticore.javalight._ast.ASTMethodDeclaration; import de.monticore.javalight._cocos.JavaLightASTAnnotationCoCo; import de.monticore.javalight._cocos.JavaLightASTMethodDeclarationCoCo; import de.monticore.statements.mccommonstatements._ast.ASTFormalParameter; import de.monticore.statements.mccommonstatements._cocos.MCCommonStatementsASTFormalParameterCoCo; -import de.monticore.statements.mcvardeclarationstatements._ast.ASTLocalVariableDeclaration; -import de.monticore.statements.mcvardeclarationstatements._cocos.MCVarDeclarationStatementsASTLocalVariableDeclarationCoCo; import de.monticore.types.mcbasictypes._ast.ASTMCType; import java.nio.file.Path; import java.util.*; @@ -183,19 +179,17 @@ protected void runCoCosPhase1(ASTOrdinaryCompilationUnit ast, ASTCDCompilationUn JavaDSLCoCoChecker checker = new JavaDSLCoCoChecker(); checker.addCoCo((JavaDSLASTJavaAnnotationCoCo) new ValidAnnotation(refCD)); checker.addCoCo((JavaLightASTAnnotationCoCo) new ValidAnnotation(refCD)); + // implicitly also adds CoCo to JavaDSLASTLocalVariableDeclaration checker.addCoCo((JavaDSLASTFieldDeclarationCoCo) new OneVarInDeclaration()); - checker.addCoCo( - (MCVarDeclarationStatementsASTLocalVariableDeclarationCoCo) new OneVarInDeclaration()); checker.checkAll(ast); } protected void runCoCosPhase2(ASTOrdinaryCompilationUnit ast, ASTCDCompilationUnit refCD) { JavaDSLCoCoChecker checker = new JavaDSLCoCoChecker(); + // implicitly also adds CoCo to JavaDSLASTLocalVariableDeclaration checker.addCoCo((JavaDSLASTTypeDeclarationCoCo) new ValidTemplate(refCD)); checker.addCoCo((JavaLightASTMethodDeclarationCoCo) new ValidTemplate(refCD)); checker.addCoCo((MCCommonStatementsASTFormalParameterCoCo) new ValidTemplate(refCD)); - checker.addCoCo( - (MCVarDeclarationStatementsASTLocalVariableDeclarationCoCo) new ValidTemplate(refCD)); checker.checkAll(ast); } } diff --git a/ref-code-adaptation/src/main/java/de/monticore/codeAdaption/validator/cocos/OneVarInDeclaration.java b/ref-code-adaptation/src/main/java/de/monticore/codeAdaption/validator/cocos/OneVarInDeclaration.java index f453ad5a..0af9443f 100644 --- a/ref-code-adaptation/src/main/java/de/monticore/codeAdaption/validator/cocos/OneVarInDeclaration.java +++ b/ref-code-adaptation/src/main/java/de/monticore/codeAdaption/validator/cocos/OneVarInDeclaration.java @@ -4,8 +4,8 @@ import de.monticore.java.javadsl._ast.ASTFieldDeclaration; import de.monticore.java.javadsl._cocos.JavaDSLASTFieldDeclarationCoCo; -import de.monticore.statements.mcvardeclarationstatements._ast.ASTLocalVariableDeclaration; -import de.monticore.statements.mcvardeclarationstatements._cocos.MCVarDeclarationStatementsASTLocalVariableDeclarationCoCo; +import de.monticore.java.javadsl._ast.ASTLocalVariableDeclaration; +import de.monticore.java.javadsl._cocos.JavaDSLASTLocalVariableDeclarationCoCo; import de.se_rwth.commons.logging.Log; /** @@ -13,8 +13,7 @@ * allowed. allow is "String a; String b"; */ public class OneVarInDeclaration - implements JavaDSLASTFieldDeclarationCoCo, - MCVarDeclarationStatementsASTLocalVariableDeclarationCoCo { + implements JavaDSLASTFieldDeclarationCoCo, JavaDSLASTLocalVariableDeclarationCoCo { protected String message = "0xRC002 %s invalid variable declaration: expected just one variable per declaration but got more."; diff --git a/ref-code-adaptation/src/main/java/de/monticore/codeAdaption/validator/cocos/ValidTemplate.java b/ref-code-adaptation/src/main/java/de/monticore/codeAdaption/validator/cocos/ValidTemplate.java index d75399a4..d8751254 100644 --- a/ref-code-adaptation/src/main/java/de/monticore/codeAdaption/validator/cocos/ValidTemplate.java +++ b/ref-code-adaptation/src/main/java/de/monticore/codeAdaption/validator/cocos/ValidTemplate.java @@ -8,6 +8,7 @@ import de.monticore.codeAdaption.utils.AdapterUtils; import de.monticore.java.javadsl._ast.*; import de.monticore.java.javadsl._cocos.JavaDSLASTFieldDeclarationCoCo; +import de.monticore.java.javadsl._cocos.JavaDSLASTLocalVariableDeclarationCoCo; import de.monticore.java.javadsl._cocos.JavaDSLASTTypeDeclarationCoCo; import de.monticore.javalight._ast.ASTAnnotation; import de.monticore.javalight._ast.ASTMethodDeclaration; @@ -15,8 +16,7 @@ import de.monticore.statements.mccommonstatements._ast.ASTFormalParameter; import de.monticore.statements.mccommonstatements._cocos.MCCommonStatementsASTFormalParameterCoCo; import de.monticore.statements.mcstatementsbasis._ast.ASTMCModifier; -import de.monticore.statements.mcvardeclarationstatements._ast.ASTLocalVariableDeclaration; -import de.monticore.statements.mcvardeclarationstatements._cocos.MCVarDeclarationStatementsASTLocalVariableDeclarationCoCo; +import de.monticore.java.javadsl._ast.ASTLocalVariableDeclaration; import de.se_rwth.commons.logging.Log; import java.util.Optional; @@ -25,7 +25,7 @@ public class ValidTemplate JavaDSLASTTypeDeclarationCoCo, JavaLightASTMethodDeclarationCoCo, MCCommonStatementsASTFormalParameterCoCo, - MCVarDeclarationStatementsASTLocalVariableDeclarationCoCo { + JavaDSLASTLocalVariableDeclarationCoCo { protected ASTCDCompilationUnit cd; public ValidTemplate(ASTCDCompilationUnit cd) { diff --git a/ref-code-adaptation/src/test/java/de/monticore/codeAdaption/matcher/AnnotMatcherTest.java b/ref-code-adaptation/src/test/java/de/monticore/codeAdaption/matcher/AnnotMatcherTest.java index c3b3c625..711f5ea3 100644 --- a/ref-code-adaptation/src/test/java/de/monticore/codeAdaption/matcher/AnnotMatcherTest.java +++ b/ref-code-adaptation/src/test/java/de/monticore/codeAdaption/matcher/AnnotMatcherTest.java @@ -3,10 +3,10 @@ import de.monticore.codeAdaption.utils.AdapterParam; import de.monticore.codeAdaption.validator.CodeValidator; import de.monticore.java.javadsl._ast.ASTFieldDeclaration; +import de.monticore.java.javadsl._ast.ASTLocalVariableDeclaration; import de.monticore.java.javadsl._ast.ASTTypeDeclaration; import de.monticore.javalight._ast.ASTMethodDeclaration; import de.monticore.statements.mccommonstatements._ast.ASTFormalParameter; -import de.monticore.statements.mcvardeclarationstatements._ast.ASTLocalVariableDeclaration; import java.util.Optional; import java.util.Set; import org.junit.jupiter.api.Assertions; diff --git a/ref-code-adaptation/src/test/java/de/monticore/codeAdaption/matcher/InfixMatcherTest.java b/ref-code-adaptation/src/test/java/de/monticore/codeAdaption/matcher/InfixMatcherTest.java index 86662685..b454a55e 100644 --- a/ref-code-adaptation/src/test/java/de/monticore/codeAdaption/matcher/InfixMatcherTest.java +++ b/ref-code-adaptation/src/test/java/de/monticore/codeAdaption/matcher/InfixMatcherTest.java @@ -4,10 +4,10 @@ import de.monticore.codeAdaption.validator.CodeValidator; import de.monticore.java.javadsl._ast.ASTFieldDeclaration; +import de.monticore.java.javadsl._ast.ASTLocalVariableDeclaration; import de.monticore.java.javadsl._ast.ASTTypeDeclaration; import de.monticore.javalight._ast.ASTMethodDeclaration; import de.monticore.statements.mccommonstatements._ast.ASTFormalParameter; -import de.monticore.statements.mcvardeclarationstatements._ast.ASTLocalVariableDeclaration; import java.util.Optional; import java.util.Set; import org.junit.jupiter.api.*; diff --git a/ref-code-adaptation/src/test/java/de/monticore/codeAdaption/validator/CodeValidatorTest.java b/ref-code-adaptation/src/test/java/de/monticore/codeAdaption/validator/CodeValidatorTest.java index 2e9e042b..c390be48 100644 --- a/ref-code-adaptation/src/test/java/de/monticore/codeAdaption/validator/CodeValidatorTest.java +++ b/ref-code-adaptation/src/test/java/de/monticore/codeAdaption/validator/CodeValidatorTest.java @@ -65,7 +65,7 @@ public void checkAnnotationPhase2(String filename, String errorCode) { ASTOrdinaryCompilationUnit ast = JavaLoader.loadJava(new File(fileName)); validator.runCoCosPhase2(ast, cd); - Assertions.assertEquals(Log.getErrorCount(), 5); + Assertions.assertEquals(5, Log.getErrorCount()); Log.getFindings().forEach(f -> Assertions.assertTrue(f.getMsg().startsWith(errorCode))); } } From eaa189c3ac69ad6e71ee1e6430e1a6b2d157e8bc Mon Sep 17 00:00:00 2001 From: Janik Rapp Date: Mon, 25 Aug 2025 11:32:34 +0200 Subject: [PATCH 4/4] replace key with nokeyword --- javaDSL/src/main/grammars/de/monticore/java/JavaDSL.mc4 | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/javaDSL/src/main/grammars/de/monticore/java/JavaDSL.mc4 b/javaDSL/src/main/grammars/de/monticore/java/JavaDSL.mc4 index a04f374a..06cc7ffe 100644 --- a/javaDSL/src/main/grammars/de/monticore/java/JavaDSL.mc4 +++ b/javaDSL/src/main/grammars/de/monticore/java/JavaDSL.mc4 @@ -374,10 +374,12 @@ ClassCreatorRest // Add support for 'var' @Override LocalVariableDeclaration - = MCModifier* ([key("var")] | MCType) (VariableDeclarator || ",")+ ; + = MCModifier* (["var"] | MCType) (VariableDeclarator || ",")+ ; @Override -LambdaParameter implements Variable = ([key("var")] | MCType)? Name; +LambdaParameter implements Variable = (["var"] | MCType)? Name; + +nokeyword "var"; /* * TODO Remove this