diff --git a/monticore-grammar/src/main/java/de/monticore/javalight/cocos/ConstructorModifiersValid.java b/monticore-grammar/src/main/java/de/monticore/javalight/cocos/ConstructorModifiersValid.java index e1289961e8..a0f4ab52f7 100644 --- a/monticore-grammar/src/main/java/de/monticore/javalight/cocos/ConstructorModifiersValid.java +++ b/monticore-grammar/src/main/java/de/monticore/javalight/cocos/ConstructorModifiersValid.java @@ -1,23 +1,39 @@ /* (c) https://github.com/MontiCore/monticore */ package de.monticore.javalight.cocos; +import de.monticore.javalight.JavaLightMill; import de.monticore.javalight._ast.ASTConstructorDeclaration; import de.monticore.javalight._cocos.JavaLightASTConstructorDeclarationCoCo; -import de.monticore.javalight._symboltable.JavaMethodSymbol; +import de.monticore.statements.mccommonstatements._ast.ASTConstantsMCCommonStatements; +import de.monticore.statements.mccommonstatements._ast.ASTJavaModifier; +import de.monticore.statements.mcstatementsbasis._ast.ASTMCModifier; import de.se_rwth.commons.logging.Log; public class ConstructorModifiersValid implements JavaLightASTConstructorDeclarationCoCo { - + public static final String ERROR_CODE = "0xA0820"; - - public static final String ERROR_MSG_FORMAT = " Constructor '%s' cannot be declared 'abstract', 'final', 'static' or 'native'."; - + + public static final String ERROR_MSG_FORMAT = + " Constructor '%s' modifier can only be one of 'public', 'protected', 'private'."; + + protected boolean isValidModifier(ASTJavaModifier modifier) { + return modifier.getModifier() == ASTConstantsMCCommonStatements.PUBLIC + || modifier.getModifier() == ASTConstantsMCCommonStatements.PROTECTED + || modifier.getModifier() == ASTConstantsMCCommonStatements.PRIVATE; + } + + // JLS17 8.8.3-3 @Override public void check(ASTConstructorDeclaration node) { - JavaMethodSymbol symbol = node.getSymbol(); - if (symbol.isIsAbstract() || symbol.isIsFinal() || symbol.isIsStatic() || symbol.isIsNative()) { - Log.error(String.format(ERROR_CODE + ERROR_MSG_FORMAT ,node.getName()), - node.get_SourcePositionStart()); + for (ASTMCModifier modifier : node.getMCModifierList()) { + if (JavaLightMill.typeDispatcher().isMCCommonStatementsASTJavaModifier(modifier)) { + ASTJavaModifier javaModifier = + JavaLightMill.typeDispatcher().asMCCommonStatementsASTJavaModifier(modifier); + if (!isValidModifier(javaModifier)) { + Log.error(String.format(ERROR_CODE + ERROR_MSG_FORMAT, node.getName()), + node.get_SourcePositionStart()); + } + } } } } diff --git a/monticore-grammar/src/main/java/de/monticore/javalight/cocos/ConstructorNoAccessModifierPair.java b/monticore-grammar/src/main/java/de/monticore/javalight/cocos/ConstructorNoAccessModifierPair.java index 1edfc44e9f..6bcb2b0e91 100644 --- a/monticore-grammar/src/main/java/de/monticore/javalight/cocos/ConstructorNoAccessModifierPair.java +++ b/monticore-grammar/src/main/java/de/monticore/javalight/cocos/ConstructorNoAccessModifierPair.java @@ -4,40 +4,46 @@ import de.monticore.javalight.JavaLightMill; import de.monticore.javalight._ast.ASTConstructorDeclaration; import de.monticore.javalight._cocos.JavaLightASTConstructorDeclarationCoCo; -import de.monticore.javalight._symboltable.JavaMethodSymbol; import de.monticore.statements.mccommonstatements._ast.ASTConstantsMCCommonStatements; import de.monticore.statements.mccommonstatements._ast.ASTJavaModifier; import de.monticore.statements.mcstatementsbasis._ast.ASTMCModifier; import de.se_rwth.commons.logging.Log; -import java.util.ArrayList; -import java.util.HashSet; import java.util.List; -import java.util.Set; -import java.util.stream.Collectors; public class ConstructorNoAccessModifierPair implements JavaLightASTConstructorDeclarationCoCo { - + public static final String ERROR_CODE = "0xA0809"; - - public static final String ERROR_MSG_FORMAT = " Invalid modifiers are mentioned in constructor's '%s' declaration at %s."; - - // JLS3 8.8.3-2 + + public static final String ERROR_MSG_FORMAT = + " Conflicting access modifiers are mentioned in constructor's '%s' declaration at %s."; + + protected boolean isAccessModifier(ASTJavaModifier modifier) { + return modifier.getModifier() == ASTConstantsMCCommonStatements.PUBLIC + || modifier.getModifier() == ASTConstantsMCCommonStatements.PROTECTED + || modifier.getModifier() == ASTConstantsMCCommonStatements.PRIVATE; + } + + // JLS17 8.8.3-2 @Override public void check(ASTConstructorDeclaration node) { + boolean hasAccessModifier = false; List modifiers = node.getMCModifierList(); - - int mod = 0; - + for (ASTMCModifier modifier : modifiers) { - ASTJavaModifier javaModifier = JavaLightMill.typeDispatcher().asMCCommonStatementsASTJavaModifier(modifier); - - if (javaModifier.getModifier() >= ASTConstantsMCCommonStatements.PRIVATE - && javaModifier.getModifier() <= ASTConstantsMCCommonStatements.PUBLIC) { - if(mod != 0 && mod != javaModifier.getModifier()) { - Log.error(String.format(ERROR_CODE+ERROR_MSG_FORMAT, node.getName(),node.get_SourcePositionStart())); + if (JavaLightMill.typeDispatcher().isMCCommonStatementsASTJavaModifier(modifier)) { + ASTJavaModifier javaModifier = + JavaLightMill.typeDispatcher().asMCCommonStatementsASTJavaModifier(modifier); + if (isAccessModifier(javaModifier)) { + if (hasAccessModifier) { + Log.error(String.format(ERROR_CODE + ERROR_MSG_FORMAT, node.getName(), + node.get_SourcePositionStart())); + break; + } + else { + hasAccessModifier = true; + } } - mod = javaModifier.getModifier(); } } } diff --git a/monticore-grammar/src/main/java/de/monticore/javalight/cocos/ConstructorNoDuplicateModifier.java b/monticore-grammar/src/main/java/de/monticore/javalight/cocos/ConstructorNoDuplicateModifier.java index de510c483b..70984325ff 100644 --- a/monticore-grammar/src/main/java/de/monticore/javalight/cocos/ConstructorNoDuplicateModifier.java +++ b/monticore-grammar/src/main/java/de/monticore/javalight/cocos/ConstructorNoDuplicateModifier.java @@ -1,54 +1,36 @@ /* (c) https://github.com/MontiCore/monticore */ package de.monticore.javalight.cocos; +import de.monticore.javalight.JavaLightMill; import de.monticore.javalight._ast.ASTConstructorDeclaration; import de.monticore.javalight._cocos.JavaLightASTConstructorDeclarationCoCo; -import de.monticore.javalight._prettyprint.JavaLightFullPrettyPrinter; -import de.monticore.prettyprint.IndentPrinter; import de.monticore.statements.mcstatementsbasis._ast.ASTMCModifier; import de.se_rwth.commons.logging.Log; -import java.util.ArrayList; -import java.util.HashSet; import java.util.List; -import java.util.Set; public class ConstructorNoDuplicateModifier implements JavaLightASTConstructorDeclarationCoCo { - + public static final String ERROR_CODE = "0xA0808"; - - public static final String ERROR_MSG_FORMAT = " modifier '%s' is mentioned more than once in the constructor '%s'. "; - - protected String prettyprint(ASTMCModifier a) { - JavaLightFullPrettyPrinter printer = new JavaLightFullPrettyPrinter(new IndentPrinter()); - a.accept(printer.getTraverser()); - return printer.getPrinter().getContent().trim(); - } - - public Set findDuplicates(List listContainingDuplicates) { - final Set setToReturn = new HashSet<>(); - final Set set1 = new HashSet<>(); - - for (String yourString : listContainingDuplicates) { - if (!set1.add(yourString)) { - setToReturn.add(yourString); - } - } - return setToReturn; - } - - // JLS3 8.8.3-1 + + public static final String ERROR_MSG_FORMAT = + " Modifier '%s' is mentioned more than once in the constructor '%s'. "; + + // JLS17 8.8.3-1 @Override public void check(ASTConstructorDeclaration node) { - //print the modifier -> add to list - List listModifier = new ArrayList<>(); - for (ASTMCModifier modifier : node.getMCModifierList()) { - listModifier.add(prettyprint(modifier)); - } - Set duplicates = findDuplicates(listModifier); - for (String duplicate : duplicates) { - Log.error(String.format(ERROR_CODE + ERROR_MSG_FORMAT, duplicate, node.getName()), - node.get_SourcePositionStart()); + List modifiers = node.getMCModifierList(); + for (int i = 0; i < modifiers.size(); i++) { + ASTMCModifier modifier = modifiers.get(i); + for (int j = i + 1; j < modifiers.size(); j++) { + ASTMCModifier modifier2 = modifiers.get(j); + if (modifier2.deepEquals(modifier)) { + String modifierName = JavaLightMill.prettyPrint(modifier2, false); + Log.error(String.format(ERROR_CODE + ERROR_MSG_FORMAT, modifierName, node.getName()), + node.get_SourcePositionStart()); + break; + } + } } } } diff --git a/monticore-grammar/src/main/java/de/monticore/javalight/cocos/MethodAbstractAndOtherModifiers.java b/monticore-grammar/src/main/java/de/monticore/javalight/cocos/MethodAbstractAndOtherModifiers.java index ba65f41a3f..4b8740324f 100644 --- a/monticore-grammar/src/main/java/de/monticore/javalight/cocos/MethodAbstractAndOtherModifiers.java +++ b/monticore-grammar/src/main/java/de/monticore/javalight/cocos/MethodAbstractAndOtherModifiers.java @@ -2,30 +2,49 @@ package de.monticore.javalight.cocos; - +import de.monticore.javalight.JavaLightMill; import de.monticore.javalight._ast.ASTMethodDeclaration; import de.monticore.javalight._cocos.JavaLightASTMethodDeclarationCoCo; -import de.monticore.javalight._symboltable.JavaMethodSymbol; +import de.monticore.statements.mccommonstatements._ast.ASTConstantsMCCommonStatements; +import de.monticore.statements.mccommonstatements._ast.ASTJavaModifier; +import de.monticore.statements.mcstatementsbasis._ast.ASTMCModifier; import de.se_rwth.commons.logging.Log; public class MethodAbstractAndOtherModifiers implements JavaLightASTMethodDeclarationCoCo { - + public static final String ERROR_CODE = "0xA0802"; - + public static final String ERROR_MSG_FORMAT = " The abstract method %s must be public. "; - + + protected boolean isValidModifier(ASTJavaModifier modifier) { + return modifier.getModifier() == ASTConstantsMCCommonStatements.PUBLIC + || modifier.getModifier() == ASTConstantsMCCommonStatements.PROTECTED; + } + + protected boolean isAbstractModifier(ASTJavaModifier modifier) { + return modifier.getModifier() == ASTConstantsMCCommonStatements.ABSTRACT; + } + //JLS3 8.4.3-3 @Override public void check(ASTMethodDeclaration node) { - JavaMethodSymbol methodSymbol = node.getSymbol(); - if (methodSymbol.isIsAbstract()) { - if (methodSymbol.isIsPrivate() || methodSymbol.isIsStatic() || methodSymbol.isIsFinal() || - methodSymbol.isIsNative() || methodSymbol.isIsStrictfp() || methodSymbol.isIsSynchronized()) { - Log.error(String.format(ERROR_CODE + ERROR_MSG_FORMAT, node.getName()), - node.get_SourcePositionStart()); + boolean isAbstractMethod = false; + for (ASTMCModifier modifier : node.getMCModifierList()) { + if (JavaLightMill.typeDispatcher().isMCCommonStatementsASTJavaModifier(modifier)) { + ASTJavaModifier javaModifier = + JavaLightMill.typeDispatcher().asMCCommonStatementsASTJavaModifier(modifier); + if (!isAbstractMethod && isAbstractModifier(javaModifier)) { + isAbstractMethod = true; + } + else { + if (!isValidModifier(javaModifier)) { + Log.error(String.format(ERROR_CODE + ERROR_MSG_FORMAT, node.getName()), + node.get_SourcePositionStart()); + break; + } + } } } } - } diff --git a/monticore-grammar/src/main/java/de/monticore/javalight/cocos/MethodModifiersValid.java b/monticore-grammar/src/main/java/de/monticore/javalight/cocos/MethodModifiersValid.java new file mode 100644 index 0000000000..6936089099 --- /dev/null +++ b/monticore-grammar/src/main/java/de/monticore/javalight/cocos/MethodModifiersValid.java @@ -0,0 +1,47 @@ +/* (c) https://github.com/MontiCore/monticore */ +package de.monticore.javalight.cocos; + +import de.monticore.javalight.JavaLightMill; +import de.monticore.javalight._ast.ASTMethodDeclaration; +import de.monticore.javalight._cocos.JavaLightASTMethodDeclarationCoCo; +import de.monticore.statements.mccommonstatements._ast.ASTConstantsMCCommonStatements; +import de.monticore.statements.mccommonstatements._ast.ASTJavaModifier; +import de.monticore.statements.mcstatementsbasis._ast.ASTMCModifier; +import de.se_rwth.commons.logging.Log; + +public class MethodModifiersValid implements JavaLightASTMethodDeclarationCoCo { + + public static final String ERROR_CODE = "0xA0822"; + + public static final String ERROR_MSG_FORMAT = + " Method '%s' has modifier %s that must not be used."; + + protected boolean isValidModifier(ASTJavaModifier modifier) { + return modifier.getModifier() == ASTConstantsMCCommonStatements.PUBLIC + || modifier.getModifier() == ASTConstantsMCCommonStatements.PROTECTED + || modifier.getModifier() == ASTConstantsMCCommonStatements.PRIVATE + || modifier.getModifier() == ASTConstantsMCCommonStatements.ABSTRACT + || modifier.getModifier() == ASTConstantsMCCommonStatements.STATIC + || modifier.getModifier() == ASTConstantsMCCommonStatements.FINAL + || modifier.getModifier() == ASTConstantsMCCommonStatements.SYNCHRONIZED + || modifier.getModifier() == ASTConstantsMCCommonStatements.NATIVE + || modifier.getModifier() == ASTConstantsMCCommonStatements.STRICTFP + || modifier.getModifier() == ASTConstantsMCCommonStatements.MODIFIER_DEFAULT; + } + + // JLS17 8.4.3 (MethodModifier) / 9.4 (InterfaceMethodModifier) + @Override + public void check(ASTMethodDeclaration node) { + for (ASTMCModifier modifier : node.getMCModifierList()) { + if (JavaLightMill.typeDispatcher().isMCCommonStatementsASTJavaModifier(modifier)) { + ASTJavaModifier javaModifier = + JavaLightMill.typeDispatcher().asMCCommonStatementsASTJavaModifier(modifier); + if (!isValidModifier(javaModifier)) { + String modifierName = JavaLightMill.prettyPrint(modifier, false); + Log.error(String.format(ERROR_CODE + ERROR_MSG_FORMAT, node.getName(), modifierName), + node.get_SourcePositionStart()); + } + } + } + } +} diff --git a/monticore-grammar/src/main/java/de/monticore/javalight/cocos/MethodNoDuplicateModifier.java b/monticore-grammar/src/main/java/de/monticore/javalight/cocos/MethodNoDuplicateModifier.java index 77894a6a7b..b515f3eec1 100644 --- a/monticore-grammar/src/main/java/de/monticore/javalight/cocos/MethodNoDuplicateModifier.java +++ b/monticore-grammar/src/main/java/de/monticore/javalight/cocos/MethodNoDuplicateModifier.java @@ -1,55 +1,35 @@ /* (c) https://github.com/MontiCore/monticore */ package de.monticore.javalight.cocos; +import de.monticore.javalight.JavaLightMill; import de.monticore.javalight._ast.ASTMethodDeclaration; import de.monticore.javalight._cocos.JavaLightASTMethodDeclarationCoCo; -import de.monticore.prettyprint.IndentPrinter; -import de.monticore.javalight._prettyprint.JavaLightFullPrettyPrinter; import de.monticore.statements.mcstatementsbasis._ast.ASTMCModifier; import de.se_rwth.commons.logging.Log; -import java.util.ArrayList; -import java.util.HashSet; import java.util.List; -import java.util.Set; public class MethodNoDuplicateModifier implements JavaLightASTMethodDeclarationCoCo { - + public static final String ERROR_CODE = "0xA0818"; - - public static final String ERROR_MSG_FORMAT = "modifier '%s' is declared more than once in method %s"; - - protected String prettyprint(ASTMCModifier a) { - JavaLightFullPrettyPrinter printer = new JavaLightFullPrettyPrinter(new IndentPrinter()); - a.accept(printer.getTraverser()); - return printer.getPrinter().getContent(); - } - - public Set findDuplicates(List listContainingDuplicates) { - final Set setToReturn = new HashSet<>(); - final Set set1 = new HashSet<>(); - - for (String modifierName : listContainingDuplicates) { - if (!set1.add(modifierName)) { - setToReturn.add(modifierName); - } - } - return setToReturn; - } - + + public static final String ERROR_MSG_FORMAT = + " Modifier '%s' is declared more than once in method %s"; + //JLS3 8.4.3-1 @Override public void check(ASTMethodDeclaration node) { - //print the modifier -> add to list - List listModifier = new ArrayList<>(); - for (ASTMCModifier modifier : node.getMCModifierList()) { - listModifier.add(prettyprint(modifier)); - } - Set duplicates = findDuplicates(listModifier); - for (String duplicate : duplicates) { - Log.error(String.format(ERROR_CODE + ERROR_MSG_FORMAT, duplicate, node.getName()), - node.get_SourcePositionStart()); + List modifiers = node.getMCModifierList(); + for (int i = 0; i < modifiers.size(); i++) { + ASTMCModifier modifier = modifiers.get(i); + for (int j = i + 1; j < modifiers.size(); j++) { + ASTMCModifier modifier2 = modifiers.get(j); + if (modifier2.deepEquals(modifier)) { + String modifierName = JavaLightMill.prettyPrint(modifier2, false); + Log.error(String.format(ERROR_CODE + ERROR_MSG_FORMAT, modifierName, node.getName()), + node.get_SourcePositionStart()); + } + } } } - } diff --git a/monticore-grammar/src/main/java/de/monticore/javalight/cocos/MethodNoNativeAndStrictfp.java b/monticore-grammar/src/main/java/de/monticore/javalight/cocos/MethodNoNativeAndStrictfp.java index fadb56c544..5f415dc29a 100644 --- a/monticore-grammar/src/main/java/de/monticore/javalight/cocos/MethodNoNativeAndStrictfp.java +++ b/monticore-grammar/src/main/java/de/monticore/javalight/cocos/MethodNoNativeAndStrictfp.java @@ -1,26 +1,49 @@ /* (c) https://github.com/MontiCore/monticore */ package de.monticore.javalight.cocos; +import de.monticore.javalight.JavaLightMill; import de.monticore.javalight._ast.ASTMethodDeclaration; import de.monticore.javalight._cocos.JavaLightASTMethodDeclarationCoCo; import de.monticore.javalight._symboltable.JavaMethodSymbol; +import de.monticore.statements.mccommonstatements._ast.ASTConstantsMCCommonStatements; +import de.monticore.statements.mccommonstatements._ast.ASTJavaModifier; +import de.monticore.statements.mcstatementsbasis._ast.ASTMCModifier; import de.se_rwth.commons.logging.Log; public class MethodNoNativeAndStrictfp implements JavaLightASTMethodDeclarationCoCo { - + public static final String ERROR_CODE = "0xA0819"; - + public static final String ERROR_MESSAGE = "Method %s must not be both 'native' and 'strictfp'."; - + + protected boolean isNativeModifier(ASTJavaModifier modifier) { + return modifier.getModifier() == ASTConstantsMCCommonStatements.NATIVE; + } + + protected boolean isStrictFpModifier(ASTJavaModifier modifier) { + return modifier.getModifier() == ASTConstantsMCCommonStatements.STRICTFP; + } + @Override public void check(ASTMethodDeclaration node) { - if (node.isPresentSymbol()) { - JavaMethodSymbol methodSymbol = node.getSymbol(); - if (methodSymbol.isIsNative() && methodSymbol.isIsStrictfp()) { - Log.error(String.format(ERROR_CODE + ERROR_MESSAGE ,node.getName()), - node.get_SourcePositionStart()); + boolean isNative = false; + boolean isStrictFp = false; + for (ASTMCModifier modifier : node.getMCModifierList()) { + if (JavaLightMill.typeDispatcher().isMCCommonStatementsASTJavaModifier(modifier)) { + ASTJavaModifier javaModifier = + JavaLightMill.typeDispatcher().asMCCommonStatementsASTJavaModifier(modifier); + if (isNativeModifier(javaModifier)) { + isNative = true; + } + else if (isStrictFpModifier(javaModifier)) { + isStrictFp = true; + } + if (isNative && isStrictFp) { + Log.error(String.format(ERROR_CODE + ERROR_MESSAGE, node.getName()), + node.get_SourcePositionStart()); + break; + } } } - } } diff --git a/monticore-grammar/src/test/java/de/monticore/javalight/cocos/MethodModifiersValidTest.java b/monticore-grammar/src/test/java/de/monticore/javalight/cocos/MethodModifiersValidTest.java new file mode 100644 index 0000000000..22937e7132 --- /dev/null +++ b/monticore-grammar/src/test/java/de/monticore/javalight/cocos/MethodModifiersValidTest.java @@ -0,0 +1,42 @@ +/* (c) https://github.com/MontiCore/monticore */ +package de.monticore.javalight.cocos; + +import de.monticore.javalight._cocos.JavaLightCoCoChecker; +import de.se_rwth.commons.logging.Log; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertTrue; + +public class MethodModifiersValidTest extends JavaLightCocoTest { + + private final String validFileName = "de.monticore.javalight.cocos.valid.A0822"; + private final String invalidFileName = "de.monticore.javalight.cocos.invalid.A0822.A0822"; + + @BeforeEach + public void initCoCo() { + checker = new JavaLightCoCoChecker(); + checker.addCoCo(new MethodModifiersValid()); + } + + @Test + public void testInvalid() { + testInvalid(invalidFileName, "method", MethodModifiersValid.ERROR_CODE, + String.format(MethodModifiersValid.ERROR_MSG_FORMAT, "method", "volatile"), checker); + } + + @Test + public void testCorrect() { + testValid(validFileName, "method", checker); + + assertTrue(Log.getFindings().isEmpty()); + } + + @Test + public void testCorrect2() { + testValid(validFileName+"a", "method", checker); + + assertTrue(Log.getFindings().isEmpty()); + } + +} diff --git a/monticore-grammar/src/test/java/de/monticore/javalight/cocos/MethodNoDuplicateModifierTest.java b/monticore-grammar/src/test/java/de/monticore/javalight/cocos/MethodNoDuplicateModifierTest.java new file mode 100644 index 0000000000..c90d58a8e1 --- /dev/null +++ b/monticore-grammar/src/test/java/de/monticore/javalight/cocos/MethodNoDuplicateModifierTest.java @@ -0,0 +1,33 @@ +/* (c) https://github.com/MontiCore/monticore */ +package de.monticore.javalight.cocos; + +import de.monticore.javalight._cocos.JavaLightCoCoChecker; +import de.se_rwth.commons.logging.Log; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +public class MethodNoDuplicateModifierTest extends JavaLightCocoTest { + + private final String fileName = "de.monticore.javalight.cocos.invalid.A0818.A0818"; + + @BeforeEach + public void initCoCo() { + checker = new JavaLightCoCoChecker(); + checker.addCoCo(new MethodNoDuplicateModifier()); + } + + @Test + public void testInvalid() { + testInvalid(fileName, "method", MethodNoDuplicateModifier.ERROR_CODE, + String.format(MethodNoDuplicateModifier.ERROR_MSG_FORMAT, "public", "method"), checker); + } + + @Test + public void testCorrect() { + testValid("de.monticore.javalight.cocos.valid.A0818", "method", checker); + + Assertions.assertTrue(Log.getFindings().isEmpty()); + } + +} diff --git a/monticore-grammar/src/test/resources/de/monticore/javalight/cocos/invalid/A0818/A0818.java b/monticore-grammar/src/test/resources/de/monticore/javalight/cocos/invalid/A0818/A0818.java new file mode 100644 index 0000000000..a6e77a5742 --- /dev/null +++ b/monticore-grammar/src/test/resources/de/monticore/javalight/cocos/invalid/A0818/A0818.java @@ -0,0 +1,2 @@ +/* (c) https://github.com/MontiCore/monticore */ +public public void method() {} diff --git a/monticore-grammar/src/test/resources/de/monticore/javalight/cocos/invalid/A0822/A0822.java b/monticore-grammar/src/test/resources/de/monticore/javalight/cocos/invalid/A0822/A0822.java new file mode 100644 index 0000000000..92d42504ae --- /dev/null +++ b/monticore-grammar/src/test/resources/de/monticore/javalight/cocos/invalid/A0822/A0822.java @@ -0,0 +1,2 @@ +/* (c) https://github.com/MontiCore/monticore */ +volatile void method() {} diff --git a/monticore-grammar/src/test/resources/de/monticore/javalight/cocos/valid/A0818.java b/monticore-grammar/src/test/resources/de/monticore/javalight/cocos/valid/A0818.java new file mode 100644 index 0000000000..76146cff17 --- /dev/null +++ b/monticore-grammar/src/test/resources/de/monticore/javalight/cocos/valid/A0818.java @@ -0,0 +1,2 @@ +/* (c) https://github.com/MontiCore/monticore */ +public void method() {} diff --git a/monticore-grammar/src/test/resources/de/monticore/javalight/cocos/valid/A0822.java b/monticore-grammar/src/test/resources/de/monticore/javalight/cocos/valid/A0822.java new file mode 100644 index 0000000000..dd7d3de9bd --- /dev/null +++ b/monticore-grammar/src/test/resources/de/monticore/javalight/cocos/valid/A0822.java @@ -0,0 +1,2 @@ +/* (c) https://github.com/MontiCore/monticore */ +public static void method() {} diff --git a/monticore-grammar/src/test/resources/de/monticore/javalight/cocos/valid/A0822a.java b/monticore-grammar/src/test/resources/de/monticore/javalight/cocos/valid/A0822a.java new file mode 100644 index 0000000000..f19860c1f9 --- /dev/null +++ b/monticore-grammar/src/test/resources/de/monticore/javalight/cocos/valid/A0822a.java @@ -0,0 +1,2 @@ +/* (c) https://github.com/MontiCore/monticore */ +default void method() {}