diff --git a/liquidjava-verifier/src/main/java/liquidjava/errors/ErrorHandler.java b/liquidjava-verifier/src/main/java/liquidjava/errors/ErrorHandler.java index f6681932..f7a242d0 100644 --- a/liquidjava-verifier/src/main/java/liquidjava/errors/ErrorHandler.java +++ b/liquidjava-verifier/src/main/java/liquidjava/errors/ErrorHandler.java @@ -181,8 +181,7 @@ public static void printCostumeError(CtElement element, String msg, ErrorEmitter sb.append(element + "\n\n"); sb.append("Location: " + element.getPosition() + "\n"); sb.append("______________________________________________________\n"); - sb.append(sb.toString()); - + errorl.addError(s, sb.toString(), element.getPosition(), 1); } diff --git a/liquidjava-verifier/src/main/java/liquidjava/processor/refinement_checker/TypeChecker.java b/liquidjava-verifier/src/main/java/liquidjava/processor/refinement_checker/TypeChecker.java index aeae4792..410c4ced 100644 --- a/liquidjava-verifier/src/main/java/liquidjava/processor/refinement_checker/TypeChecker.java +++ b/liquidjava-verifier/src/main/java/liquidjava/processor/refinement_checker/TypeChecker.java @@ -111,6 +111,19 @@ public void handleStateSetsFromAnnotation(CtElement element) { } private void createStateSet(CtNewArray e, int set, CtElement element) { + + // if any of the states starts with uppercase, throw error (reserved for alias) + for (CtExpression ce : e.getElements()) { + if (ce instanceof CtLiteral) { + @SuppressWarnings("unchecked") + CtLiteral s = (CtLiteral) ce; + String f = s.getValue(); + if (Character.isUpperCase(f.charAt(0))) { + ErrorHandler.printCostumeError(s, "State name must start with lowercase in '" + f + "'", errorEmitter); + } + } + } + Optional og = createStateGhost(set, element); if (!og.isPresent()) { throw new RuntimeException("Error in creation of GhostFunction");