Search in sources :

Example 1 with TypedVarOrFieldDecl

use of abs.frontend.ast.TypedVarOrFieldDecl in project abstools by abstools.

the class FinalAnnotationTypeExtension method checkAssignStmt.

@Override
public void checkAssignStmt(AssignStmt s) {
    VarOrFieldDecl decl = s.getVar().getDecl();
    if (decl instanceof TypedVarOrFieldDecl) {
        TypedVarOrFieldDecl d = (TypedVarOrFieldDecl) decl;
        // Not sure if this code will encounter delta bodies:
        if (d.isFinal()) {
            String name = d.getName();
            boolean isField = (d instanceof FieldDecl);
            String kind = isField ? "field" : "variable";
            add(new TypeError(s, ErrorMessage.ASSIGN_TO_FINAL, kind, name));
        }
    } else {
    // It's a PatternVarDecl.  Assume these are never final.
    }
}
Also used : VarOrFieldDecl(abs.frontend.ast.VarOrFieldDecl) FieldDecl(abs.frontend.ast.FieldDecl) TypedVarOrFieldDecl(abs.frontend.ast.TypedVarOrFieldDecl) VarOrFieldDecl(abs.frontend.ast.VarOrFieldDecl) TypedVarOrFieldDecl(abs.frontend.ast.TypedVarOrFieldDecl) TypedVarOrFieldDecl(abs.frontend.ast.TypedVarOrFieldDecl) TypeError(abs.frontend.analyser.TypeError)

Aggregations

TypeError (abs.frontend.analyser.TypeError)1 FieldDecl (abs.frontend.ast.FieldDecl)1 TypedVarOrFieldDecl (abs.frontend.ast.TypedVarOrFieldDecl)1 VarOrFieldDecl (abs.frontend.ast.VarOrFieldDecl)1