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