diff --git a/javaparser-core-generators/pom.xml b/javaparser-core-generators/pom.xml index 54ab98f251..3db09af993 100644 --- a/javaparser-core-generators/pom.xml +++ b/javaparser-core-generators/pom.xml @@ -3,7 +3,7 @@ jmlparser-parent io.github.jmltoolkit - 3.27.0-b7-SNAPSHOT + 3.27.0-c1-SNAPSHOT 4.0.0 diff --git a/javaparser-core-metamodel-generator/pom.xml b/javaparser-core-metamodel-generator/pom.xml index 0c872ecf49..295651f82f 100644 --- a/javaparser-core-metamodel-generator/pom.xml +++ b/javaparser-core-metamodel-generator/pom.xml @@ -3,7 +3,7 @@ jmlparser-parent io.github.jmltoolkit - 3.27.0-b7-SNAPSHOT + 3.27.0-c1-SNAPSHOT 4.0.0 diff --git a/javaparser-core-serialization/pom.xml b/javaparser-core-serialization/pom.xml index 35792f839b..d7a5a33a50 100644 --- a/javaparser-core-serialization/pom.xml +++ b/javaparser-core-serialization/pom.xml @@ -2,7 +2,7 @@ jmlparser-parent io.github.jmltoolkit - 3.27.0-b7-SNAPSHOT + 3.27.0-c1-SNAPSHOT 4.0.0 diff --git a/javaparser-core-testing-bdd/pom.xml b/javaparser-core-testing-bdd/pom.xml index 347cf738af..1da8d5237a 100644 --- a/javaparser-core-testing-bdd/pom.xml +++ b/javaparser-core-testing-bdd/pom.xml @@ -3,7 +3,7 @@ jmlparser-parent io.github.jmltoolkit - 3.27.0-b7-SNAPSHOT + 3.27.0-c1-SNAPSHOT 4.0.0 diff --git a/javaparser-core-testing/pom.xml b/javaparser-core-testing/pom.xml index e1a6613312..e9d4293e07 100644 --- a/javaparser-core-testing/pom.xml +++ b/javaparser-core-testing/pom.xml @@ -3,7 +3,7 @@ jmlparser-parent io.github.jmltoolkit - 3.27.0-b7-SNAPSHOT + 3.27.0-c1-SNAPSHOT 4.0.0 diff --git a/javaparser-core/pom.xml b/javaparser-core/pom.xml index 5a24fc81b5..fad2876eae 100644 --- a/javaparser-core/pom.xml +++ b/javaparser-core/pom.xml @@ -3,7 +3,7 @@ jmlparser-parent io.github.jmltoolkit - 3.27.0-b7-SNAPSHOT + 3.27.0-c1-SNAPSHOT 4.0.0 diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/validator/language_level_validations/chunks/ModifierValidator.java b/javaparser-core/src/main/java/com/github/javaparser/ast/validator/language_level_validations/chunks/ModifierValidator.java index 69219db2ee..d089baf1d9 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/validator/language_level_validations/chunks/ModifierValidator.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/validator/language_level_validations/chunks/ModifierValidator.java @@ -32,6 +32,7 @@ import com.github.javaparser.ast.stmt.CatchClause; import com.github.javaparser.ast.validator.ProblemReporter; import com.github.javaparser.ast.validator.VisitorValidator; +import com.github.javaparser.ast.jml.body.JmlFieldDeclaration; import com.github.javaparser.utils.SeparatedItemStringBuilder; import java.util.ArrayList; import java.util.List; @@ -116,6 +117,13 @@ public void visit(ConstructorDeclaration n, ProblemReporter reporter) { super.visit(n, reporter); } + @Override + public void visit(JmlFieldDeclaration n, ProblemReporter reporter) { + //Adds model, ghost, and instance to the allowed modifiers + validateModifiers(n.getDecl(), reporter, PUBLIC, PROTECTED, PRIVATE, STATIC, FINAL, TRANSIENT, VOLATILE, JML_GHOST, JML_MODEL, JML_INSTANCE); + super.visit(n.getDecl(), reporter); + } + @Override public void visit(FieldDeclaration n, ProblemReporter reporter) { validateModifiers(n, reporter, PUBLIC, PROTECTED, PRIVATE, STATIC, FINAL, TRANSIENT, VOLATILE); @@ -186,6 +194,8 @@ public void visit(ModuleRequiresDirective n, ProblemReporter reporter) { private & NodeWithTokenRange> void validateModifiers(T n, ProblemReporter reporter, Modifier.Keyword... allowedModifiers) { validateAtMostOneOf(n, reporter, PUBLIC, PROTECTED, PRIVATE); validateAtMostOneOf(n, reporter, FINAL, ABSTRACT); + validateAtMostOneOf(n, reporter, JML_INSTANCE, STATIC); + validateAtMostOneOf(n, reporter, JML_MODEL, JML_GHOST); if (hasStrictfp) { validateAtMostOneOf(n, reporter, NATIVE, STRICTFP); } else { diff --git a/javaparser-core/src/main/java/com/github/javaparser/printer/DefaultPrettyPrinterVisitor.java b/javaparser-core/src/main/java/com/github/javaparser/printer/DefaultPrettyPrinterVisitor.java index 0ea5fe83a4..acb3577da1 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/printer/DefaultPrettyPrinterVisitor.java +++ b/javaparser-core/src/main/java/com/github/javaparser/printer/DefaultPrettyPrinterVisitor.java @@ -997,6 +997,17 @@ void wrapInJmlIfNeeded(Runnable run) { } } + void wrapInJmlIfNeededBlock(Runnable run) { + boolean b = inJmlComment(); + if (!b) { + startJmlComment(false, new NodeList<>()); + run.run(); + endJmlComment(); + } else { + run.run(); + } + } + @Override public void visit(JmlCallableClause n, Void arg) { printOrphanCommentsBeforeThisChildNode(n); @@ -1031,58 +1042,61 @@ public void visit(JmlClauseIf n, Void arg) { @Override public void visit(JmlClassExprDeclaration n, Void arg) { - printOrphanCommentsBeforeThisChildNode(n); - printModifiers(n.getModifiers()); - printer.print("invariant "); - n.getInvariant().accept(this, arg); - printer.print(";"); + wrapInJmlIfNeeded(() -> { + printOrphanCommentsBeforeThisChildNode(n); + printModifiers(n.getModifiers()); + printer.print("invariant "); + n.getInvariant().accept(this, arg); + printer.print(";"); + }); } @Override public void visit(JmlClassAccessibleDeclaration n, Void arg) { printOrphanCommentsBeforeThisChildNode(n); - printModifiers(n.getModifiers()); - printer.print("accessible"); - printer.print(" "); - n.getVariable().accept(this, arg); - printer.print(" : "); - printList(n.getExpressions(), ", "); - if (n.getMeasuredBy().isPresent()) { - printer.print("\\measured_by"); - n.getMeasuredBy().get().accept(this, arg); - } - printer.print(";"); + wrapInJmlIfNeeded(() -> { + printModifiers(n.getModifiers()); + printer.print("accessible"); + printer.print(" "); + n.getVariable().accept(this, arg); + printer.print(" : "); + printList(n.getExpressions(), ", "); + if (n.getMeasuredBy().isPresent()) { + printer.print("\\measured_by"); + n.getMeasuredBy().get().accept(this, arg); + } + printer.print(";"); + }); } @Override public void visit(JmlRepresentsDeclaration n, Void arg) { - printOrphanCommentsBeforeThisChildNode(n); - printModifiers(n.getModifiers()); - printer.print("represents"); - printer.print(" "); - n.getName().accept(this, arg); - printer.print(" = "); - n.getExpr().accept(this, arg); - printer.print(";"); + wrapInJmlIfNeeded(() -> { + printOrphanCommentsBeforeThisChildNode(n); + printModifiers(n.getModifiers()); + printer.print("represents"); + printer.print(" "); + n.getName().accept(this, arg); + printer.print(" = "); + n.getExpr().accept(this, arg); + printer.print(";"); + }); } @Override public void visit(JmlContract n, Void arg) { printOrphanCommentsBeforeThisChildNode(n); - boolean openedJml = inJmlComment(); - if (!openedJml) - startJmlComment(false, n.getJmlTags()); - printModifiers(n.getModifiers()); - printer.print(" "); - printer.print(n.getBehavior().jmlSymbol()); - printer.indent(); - printer.println(); - printList(n.getClauses(), ""); - printer.indent(); - printList(n.getSubContracts(), "", "", "", "{|\n", "|}"); - printer.unindent().unindent(); - if (!openedJml) - endJmlComment(); + wrapInJmlIfNeededBlock(() -> { + printModifiers(n.getModifiers()); + printer.print(" "); + printer.print(n.getBehavior().jmlSymbol()); + printer.indent(); + printer.println(); + printList(n.getClauses(), ""); + printer.indent(); + printList(n.getSubContracts(), "", "", "", "{|\n", "|}"); + printer.unindent().unindent(); + }); } private void endJmlComment() { @@ -1176,9 +1190,9 @@ public void visit(JmlDocType n, Void arg) { @Override public void visit(JmlFieldDeclaration n, Void arg) { - startJmlComment(false, new NodeList<>()); - n.getDecl().accept(this, null); - endJmlComment(); + wrapInJmlIfNeeded(() -> { + n.getDecl().accept(this, null); + }); } @Override diff --git a/javaparser-symbol-solver-core/pom.xml b/javaparser-symbol-solver-core/pom.xml index ef23f79372..68528d0a6b 100644 --- a/javaparser-symbol-solver-core/pom.xml +++ b/javaparser-symbol-solver-core/pom.xml @@ -4,7 +4,7 @@ jmlparser-parent io.github.jmltoolkit - 3.27.0-b7-SNAPSHOT + 3.27.0-c1-SNAPSHOT 4.0.0 diff --git a/javaparser-symbol-solver-testing/pom.xml b/javaparser-symbol-solver-testing/pom.xml index cc02a8bad9..61aa12905b 100644 --- a/javaparser-symbol-solver-testing/pom.xml +++ b/javaparser-symbol-solver-testing/pom.xml @@ -4,7 +4,7 @@ jmlparser-parent io.github.jmltoolkit - 3.27.0-b7-SNAPSHOT + 3.27.0-c1-SNAPSHOT 4.0.0 diff --git a/jmlparser-jml-tests/pom.xml b/jmlparser-jml-tests/pom.xml index 225a649df8..189c560966 100644 --- a/jmlparser-jml-tests/pom.xml +++ b/jmlparser-jml-tests/pom.xml @@ -2,7 +2,7 @@ jmlparser-parent io.github.jmltoolkit - 3.27.0-b7-SNAPSHOT + 3.27.0-c1-SNAPSHOT 4.0.0 diff --git a/pom.xml b/pom.xml index 30d7458e21..c8c0300d27 100644 --- a/pom.xml +++ b/pom.xml @@ -16,7 +16,7 @@ io.github.jmltoolkit jmlparser-parent pom - 3.27.0-b7-SNAPSHOT + 3.27.0-c1-SNAPSHOT jmlparser-parent https://github.com/wadoon/jmlparser