mirror of
https://github.com/tiennm99/lombok.git
synced 2026-10-11 12:19:00 +00:00
[fixes #2386] [checkerframework]
Now generating checkerframework `@Pure` instead of `@SideEffectFree` where appropriate.
This commit is contained in:
17 files changed
+79
-34
No files matched your search
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2009-2018 The Project Lombok Authors.
|
||||
* Copyright (C) 2009-2020 The Project Lombok Authors.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -286,6 +286,7 @@ public abstract class LombokNode<A extends AST<A, L, N>, L extends LombokNode<A,
|
||||
public abstract <Z extends Annotation> AnnotationValues<Z> findAnnotation(Class<Z> type);
|
||||
|
||||
public abstract boolean isStatic();
|
||||
public abstract boolean isFinal();
|
||||
public abstract boolean isTransient();
|
||||
public abstract boolean isEnumMember();
|
||||
public abstract boolean isEnumType();
|
||||
|
||||
@@ -26,9 +26,11 @@ import java.util.regex.Pattern;
|
||||
|
||||
public final class CheckerFrameworkVersion implements ConfigurationValueType {
|
||||
private final int version;
|
||||
private static final int MAX_SUPPORTED = 3000;
|
||||
private static final int DEFAULT = 3200;
|
||||
private static final int MAX_SUPPORTED = 4000;
|
||||
|
||||
public static final String NAME__SIDE_EFFECT_FREE = "org.checkerframework.dataflow.qual.SideEffectFree";
|
||||
public static final String NAME__PURE = "org.checkerframework.dataflow.qual.Pure";
|
||||
public static final String NAME__UNIQUE = "org.checkerframework.common.aliasing.qual.Unique";
|
||||
public static final String NAME__RETURNS_RECEIVER = "org.checkerframework.checker.builder.qual.ReturnsReceiver";
|
||||
public static final String NAME__NOT_CALLED = "org.checkerframework.checker.builder.qual.NotCalledMethods";
|
||||
@@ -47,21 +49,25 @@ public final class CheckerFrameworkVersion implements ConfigurationValueType {
|
||||
}
|
||||
|
||||
public boolean generateUnique() {
|
||||
return version > 2899;
|
||||
}
|
||||
|
||||
public boolean generatePure() {
|
||||
return version > 0;
|
||||
}
|
||||
|
||||
public boolean generateReturnsReceiver() {
|
||||
return version > 2999;
|
||||
return version > 3999;
|
||||
}
|
||||
|
||||
public boolean generateCalledMethods() {
|
||||
return version > 2999;
|
||||
return version > 3999;
|
||||
}
|
||||
|
||||
public static CheckerFrameworkVersion valueOf(String versionString) {
|
||||
if (versionString != null) versionString = versionString.trim();
|
||||
if (versionString == null || versionString.equalsIgnoreCase("false") || versionString.equals("0")) return new CheckerFrameworkVersion(0);
|
||||
if (versionString.equalsIgnoreCase("true")) return new CheckerFrameworkVersion(MAX_SUPPORTED);
|
||||
if (versionString.equalsIgnoreCase("true")) return new CheckerFrameworkVersion(DEFAULT);
|
||||
Matcher m = VERSION.matcher(versionString);
|
||||
if (!m.matches()) throw new IllegalArgumentException("Expected 'true' or 'false' or a major/minor version, such as '2.9'");
|
||||
int major = Integer.parseInt(m.group(1));
|
||||
@@ -81,7 +87,7 @@ public final class CheckerFrameworkVersion implements ConfigurationValueType {
|
||||
|
||||
public static String exampleValue() {
|
||||
String s = (MAX_SUPPORTED / 1000) + "." + (MAX_SUPPORTED % 1000);
|
||||
return "major.minor (example: 2.9 - and no higher than " + s + ") or true or false";
|
||||
return "major.minor (example: 3.2 - and no higher than " + s + ") or true or false";
|
||||
}
|
||||
|
||||
@Override public boolean equals(Object obj) {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2009-2019 The Project Lombok Authors.
|
||||
* Copyright (C) 2009-2020 The Project Lombok Authors.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -248,6 +248,22 @@ public class EclipseNode extends lombok.core.LombokNode<EclipseAST, EclipseNode,
|
||||
return (ClassFileConstants.AccStatic & f) != 0;
|
||||
}
|
||||
|
||||
@Override public boolean isFinal() {
|
||||
if (node instanceof FieldDeclaration) {
|
||||
EclipseNode directUp = directUp();
|
||||
if (directUp != null && directUp.get() instanceof TypeDeclaration) {
|
||||
TypeDeclaration p = (TypeDeclaration) directUp.get();
|
||||
int f = p.modifiers;
|
||||
if (((ClassFileConstants.AccInterface | ClassFileConstants.AccEnum) & f) != 0) return true;
|
||||
}
|
||||
}
|
||||
|
||||
Integer i = getModifiers();
|
||||
if (i == null) return false;
|
||||
int f = i.intValue();
|
||||
return (ClassFileConstants.AccFinal & f) != 0;
|
||||
}
|
||||
|
||||
@Override public boolean isTransient() {
|
||||
if (getKind() != Kind.FIELD) return false;
|
||||
Integer i = getModifiers();
|
||||
|
||||
@@ -824,7 +824,7 @@ public class HandleEqualsAndHashCode extends EclipseAnnotationHandler<EqualsAndH
|
||||
setGeneratedBy(returnStatement, source);
|
||||
|
||||
method.statements = new Statement[] {returnStatement};
|
||||
if (getCheckerFrameworkVersion(type).generateSideEffectFree()) method.annotations = new Annotation[] { generateNamedAnnotation(source, CheckerFrameworkVersion.NAME__SIDE_EFFECT_FREE) };
|
||||
if (getCheckerFrameworkVersion(type).generatePure()) method.annotations = new Annotation[] { generateNamedAnnotation(source, CheckerFrameworkVersion.NAME__PURE) };
|
||||
return method;
|
||||
}
|
||||
|
||||
|
||||
@@ -270,7 +270,11 @@ public class HandleGetter extends EclipseAnnotationHandler<Getter> {
|
||||
/* Generate annotations that must be put on the generated method, and attach them. */ {
|
||||
Annotation[] deprecated = null, checkerFramework = null;
|
||||
if (isFieldDeprecated(fieldNode)) deprecated = new Annotation[] { generateDeprecatedAnnotation(source) };
|
||||
if (getCheckerFrameworkVersion(fieldNode).generateSideEffectFree()) checkerFramework = new Annotation[] { generateNamedAnnotation(source, CheckerFrameworkVersion.NAME__SIDE_EFFECT_FREE) };
|
||||
if (fieldNode.isFinal()) {
|
||||
if (getCheckerFrameworkVersion(fieldNode).generatePure()) checkerFramework = new Annotation[] { generateNamedAnnotation(source, CheckerFrameworkVersion.NAME__PURE) };
|
||||
} else {
|
||||
if (getCheckerFrameworkVersion(fieldNode).generateSideEffectFree()) checkerFramework = new Annotation[] { generateNamedAnnotation(source, CheckerFrameworkVersion.NAME__SIDE_EFFECT_FREE) };
|
||||
}
|
||||
|
||||
method.annotations = copyAnnotations(source,
|
||||
onMethod.toArray(new Annotation[0]),
|
||||
|
||||
@@ -785,7 +785,7 @@ public class HandleSuperBuilder extends EclipseAnnotationHandler<SuperBuilder> {
|
||||
out.modifiers = ClassFileConstants.AccAbstract | ClassFileConstants.AccProtected | ExtraCompilerModifiers.AccSemicolonBody;
|
||||
Annotation overrideAnn = override ? makeMarkerAnnotation(TypeConstants.JAVA_LANG_OVERRIDE, tdParent.get()) : null;
|
||||
Annotation rrAnn = cfv.generateReturnsReceiver() ? generateNamedAnnotation(tdParent.get(), CheckerFrameworkVersion.NAME__RETURNS_RECEIVER): null;
|
||||
Annotation sefAnn = cfv.generateSideEffectFree() ? generateNamedAnnotation(tdParent.get(), CheckerFrameworkVersion.NAME__SIDE_EFFECT_FREE): null;
|
||||
Annotation sefAnn = cfv.generatePure() ? generateNamedAnnotation(tdParent.get(), CheckerFrameworkVersion.NAME__PURE): null;
|
||||
if (overrideAnn != null && rrAnn != null && sefAnn != null) out.annotations = new Annotation[] {overrideAnn, rrAnn, sefAnn};
|
||||
else if (overrideAnn != null && rrAnn != null) out.annotations = new Annotation[] {overrideAnn, rrAnn};
|
||||
else if (overrideAnn != null && sefAnn != null) out.annotations = new Annotation[] {overrideAnn, sefAnn};
|
||||
@@ -804,7 +804,7 @@ public class HandleSuperBuilder extends EclipseAnnotationHandler<SuperBuilder> {
|
||||
out.modifiers = ClassFileConstants.AccProtected;
|
||||
Annotation overrideAnn = makeMarkerAnnotation(TypeConstants.JAVA_LANG_OVERRIDE, builderImplType.get());
|
||||
Annotation rrAnn = cfv.generateReturnsReceiver() ? generateNamedAnnotation(builderImplType.get(), CheckerFrameworkVersion.NAME__RETURNS_RECEIVER): null;
|
||||
Annotation sefAnn = cfv.generateSideEffectFree() ? generateNamedAnnotation(builderImplType.get(), CheckerFrameworkVersion.NAME__SIDE_EFFECT_FREE): null;
|
||||
Annotation sefAnn = cfv.generatePure() ? generateNamedAnnotation(builderImplType.get(), CheckerFrameworkVersion.NAME__PURE): null;
|
||||
if (rrAnn != null && sefAnn != null) out.annotations = new Annotation[] {overrideAnn, rrAnn, sefAnn};
|
||||
else if (rrAnn != null) out.annotations = new Annotation[] {overrideAnn, rrAnn};
|
||||
else if (sefAnn != null) out.annotations = new Annotation[] {overrideAnn, sefAnn};
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2009-2019 The Project Lombok Authors.
|
||||
* Copyright (C) 2009-2020 The Project Lombok Authors.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -319,6 +319,20 @@ public class JavacNode extends lombok.core.LombokNode<JavacAST, JavacNode, JCTre
|
||||
return (mods.flags & Flags.STATIC) != 0;
|
||||
}
|
||||
|
||||
@Override public boolean isFinal() {
|
||||
if (node instanceof JCVariableDecl) {
|
||||
JavacNode directUp = directUp();
|
||||
if (directUp != null && directUp.get() instanceof JCClassDecl) {
|
||||
JCClassDecl p = (JCClassDecl) directUp.get();
|
||||
long f = p.mods.flags;
|
||||
if (((Flags.INTERFACE | Flags.ENUM) & f) != 0) return true;
|
||||
}
|
||||
|
||||
}
|
||||
JCModifiers mods = getModifiers();
|
||||
return mods != null && (Flags.FINAL & mods.flags) != 0;
|
||||
}
|
||||
|
||||
@Override public boolean isEnumMember() {
|
||||
if (getKind() != Kind.FIELD) return false;
|
||||
JCModifiers mods = getModifiers();
|
||||
|
||||
@@ -520,8 +520,8 @@ public class HandleEqualsAndHashCode extends JavacAnnotationHandler<EqualsAndHas
|
||||
|
||||
List<JCAnnotation> annsOnMethod = List.nil();
|
||||
CheckerFrameworkVersion checkerFramework = getCheckerFrameworkVersion(typeNode);
|
||||
if (checkerFramework.generateSideEffectFree()) {
|
||||
annsOnMethod = annsOnMethod.prepend(maker.Annotation(genTypeRef(typeNode, CheckerFrameworkVersion.NAME__SIDE_EFFECT_FREE), List.<JCExpression>nil()));
|
||||
if (checkerFramework.generatePure()) {
|
||||
annsOnMethod = annsOnMethod.prepend(maker.Annotation(genTypeRef(typeNode, CheckerFrameworkVersion.NAME__PURE), List.<JCExpression>nil()));
|
||||
}
|
||||
JCModifiers mods = maker.Modifiers(Flags.PROTECTED, annsOnMethod);
|
||||
JCExpression returnType = maker.TypeIdent(CTC_BOOLEAN);
|
||||
|
||||
@@ -251,7 +251,11 @@ public class HandleGetter extends JavacAnnotationHandler<Getter> {
|
||||
List<JCAnnotation> copyableAnnotations = findCopyableAnnotations(field);
|
||||
List<JCAnnotation> delegates = findDelegatesAndRemoveFromField(field);
|
||||
List<JCAnnotation> annsOnMethod = copyAnnotations(onMethod).appendList(copyableAnnotations);
|
||||
if (getCheckerFrameworkVersion(field).generateSideEffectFree()) annsOnMethod = annsOnMethod.prepend(treeMaker.Annotation(genTypeRef(field, CheckerFrameworkVersion.NAME__SIDE_EFFECT_FREE), List.<JCExpression>nil()));
|
||||
if (field.isFinal()) {
|
||||
if (getCheckerFrameworkVersion(field).generatePure()) annsOnMethod = annsOnMethod.prepend(treeMaker.Annotation(genTypeRef(field, CheckerFrameworkVersion.NAME__PURE), List.<JCExpression>nil()));
|
||||
} else {
|
||||
if (getCheckerFrameworkVersion(field).generateSideEffectFree()) annsOnMethod = annsOnMethod.prepend(treeMaker.Annotation(genTypeRef(field, CheckerFrameworkVersion.NAME__SIDE_EFFECT_FREE), List.<JCExpression>nil()));
|
||||
}
|
||||
if (isFieldDeprecated(field)) annsOnMethod = annsOnMethod.prepend(treeMaker.Annotation(genJavaLangTypeRef(field, "Deprecated"), List.<JCExpression>nil()));
|
||||
|
||||
JCMethodDecl decl = recursiveSetGeneratedBy(treeMaker.MethodDef(treeMaker.Modifiers(access, annsOnMethod), methodName, methodType,
|
||||
|
||||
@@ -750,7 +750,7 @@ public class HandleSuperBuilder extends JavacAnnotationHandler<SuperBuilder> {
|
||||
List<JCAnnotation> annotations = List.nil();
|
||||
JCAnnotation overrideAnnotation = override ? maker.Annotation(genJavaLangTypeRef(type, "Override"), List.<JCExpression>nil()) : null;
|
||||
JCAnnotation rrAnnotation = cfv.generateReturnsReceiver() ? maker.Annotation(genTypeRef(type, CheckerFrameworkVersion.NAME__RETURNS_RECEIVER), List.<JCExpression>nil()) : null;
|
||||
JCAnnotation sefAnnotation = cfv.generateSideEffectFree() ? maker.Annotation(genTypeRef(type, CheckerFrameworkVersion.NAME__SIDE_EFFECT_FREE), List.<JCExpression>nil()) : null;
|
||||
JCAnnotation sefAnnotation = cfv.generatePure() ? maker.Annotation(genTypeRef(type, CheckerFrameworkVersion.NAME__PURE), List.<JCExpression>nil()) : null;
|
||||
if (sefAnnotation != null) annotations = annotations.prepend(sefAnnotation);
|
||||
if (rrAnnotation != null) annotations = annotations.prepend(rrAnnotation);
|
||||
if (overrideAnnotation != null) annotations = annotations.prepend(overrideAnnotation);
|
||||
@@ -766,7 +766,7 @@ public class HandleSuperBuilder extends JavacAnnotationHandler<SuperBuilder> {
|
||||
|
||||
JCAnnotation overrideAnnotation = maker.Annotation(genJavaLangTypeRef(builderImplType, "Override"), List.<JCExpression>nil());
|
||||
JCAnnotation rrAnnotation = cfv.generateReturnsReceiver() ? maker.Annotation(genTypeRef(builderImplType, CheckerFrameworkVersion.NAME__RETURNS_RECEIVER), List.<JCExpression>nil()) : null;
|
||||
JCAnnotation sefAnnotation = cfv.generateSideEffectFree() ? maker.Annotation(genTypeRef(builderImplType, CheckerFrameworkVersion.NAME__SIDE_EFFECT_FREE), List.<JCExpression>nil()) : null;
|
||||
JCAnnotation sefAnnotation = cfv.generatePure() ? maker.Annotation(genTypeRef(builderImplType, CheckerFrameworkVersion.NAME__PURE), List.<JCExpression>nil()) : null;
|
||||
List<JCAnnotation> annsOnMethod = List.nil();
|
||||
if (sefAnnotation != null) annsOnMethod = annsOnMethod.prepend(sefAnnotation);
|
||||
if (rrAnnotation != null) annsOnMethod = annsOnMethod.prepend(rrAnnotation);
|
||||
|
||||
@@ -8,12 +8,12 @@ class CheckerFrameworkBasic {
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
}
|
||||
@org.checkerframework.dataflow.qual.SideEffectFree
|
||||
@org.checkerframework.dataflow.qual.Pure
|
||||
@java.lang.SuppressWarnings("all")
|
||||
public int getX() {
|
||||
return this.x;
|
||||
}
|
||||
@org.checkerframework.dataflow.qual.SideEffectFree
|
||||
@org.checkerframework.dataflow.qual.Pure
|
||||
@java.lang.SuppressWarnings("all")
|
||||
public int getY() {
|
||||
return this.y;
|
||||
@@ -42,7 +42,7 @@ class CheckerFrameworkBasic {
|
||||
if (this.getZ() != other.getZ()) return false;
|
||||
return true;
|
||||
}
|
||||
@org.checkerframework.dataflow.qual.SideEffectFree
|
||||
@org.checkerframework.dataflow.qual.Pure
|
||||
@java.lang.SuppressWarnings("all")
|
||||
protected boolean canEqual(final java.lang.Object other) {
|
||||
return other instanceof CheckerFrameworkBasic;
|
||||
|
||||
@@ -23,7 +23,7 @@ class CheckerFrameworkSuperBuilder {
|
||||
@java.lang.SuppressWarnings("all")
|
||||
private java.util.ArrayList<String> names;
|
||||
@org.checkerframework.checker.builder.qual.ReturnsReceiver
|
||||
@org.checkerframework.dataflow.qual.SideEffectFree
|
||||
@org.checkerframework.dataflow.qual.Pure
|
||||
@java.lang.SuppressWarnings("all")
|
||||
protected abstract B self();
|
||||
@org.checkerframework.dataflow.qual.SideEffectFree
|
||||
@@ -86,7 +86,7 @@ class CheckerFrameworkSuperBuilder {
|
||||
}
|
||||
@java.lang.Override
|
||||
@org.checkerframework.checker.builder.qual.ReturnsReceiver
|
||||
@org.checkerframework.dataflow.qual.SideEffectFree
|
||||
@org.checkerframework.dataflow.qual.Pure
|
||||
@java.lang.SuppressWarnings("all")
|
||||
protected CheckerFrameworkSuperBuilder.Parent.ParentBuilderImpl self() {
|
||||
return this;
|
||||
@@ -141,7 +141,7 @@ class CheckerFrameworkSuperBuilder {
|
||||
private int b;
|
||||
@java.lang.Override
|
||||
@org.checkerframework.checker.builder.qual.ReturnsReceiver
|
||||
@org.checkerframework.dataflow.qual.SideEffectFree
|
||||
@org.checkerframework.dataflow.qual.Pure
|
||||
@java.lang.SuppressWarnings("all")
|
||||
protected abstract B self();
|
||||
@org.checkerframework.dataflow.qual.SideEffectFree
|
||||
@@ -176,7 +176,7 @@ class CheckerFrameworkSuperBuilder {
|
||||
}
|
||||
@java.lang.Override
|
||||
@org.checkerframework.checker.builder.qual.ReturnsReceiver
|
||||
@org.checkerframework.dataflow.qual.SideEffectFree
|
||||
@org.checkerframework.dataflow.qual.Pure
|
||||
@java.lang.SuppressWarnings("all")
|
||||
protected CheckerFrameworkSuperBuilder.Child.ChildBuilderImpl self() {
|
||||
return this;
|
||||
|
||||
@@ -8,10 +8,10 @@ import lombok.With;
|
||||
public @org.checkerframework.dataflow.qual.SideEffectFree @java.lang.SuppressWarnings("all") CheckerFrameworkBasic withX(final int x) {
|
||||
return ((this.x == x) ? this : new CheckerFrameworkBasic(x, this.y, this.z));
|
||||
}
|
||||
public @org.checkerframework.dataflow.qual.SideEffectFree @java.lang.SuppressWarnings("all") int getX() {
|
||||
public @org.checkerframework.dataflow.qual.Pure @java.lang.SuppressWarnings("all") int getX() {
|
||||
return this.x;
|
||||
}
|
||||
public @org.checkerframework.dataflow.qual.SideEffectFree @java.lang.SuppressWarnings("all") int getY() {
|
||||
public @org.checkerframework.dataflow.qual.Pure @java.lang.SuppressWarnings("all") int getY() {
|
||||
return this.y;
|
||||
}
|
||||
public @org.checkerframework.dataflow.qual.SideEffectFree @java.lang.SuppressWarnings("all") int getZ() {
|
||||
@@ -37,7 +37,7 @@ import lombok.With;
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
protected @org.checkerframework.dataflow.qual.SideEffectFree @java.lang.SuppressWarnings("all") boolean canEqual(final java.lang.Object other) {
|
||||
protected @org.checkerframework.dataflow.qual.Pure @java.lang.SuppressWarnings("all") boolean canEqual(final java.lang.Object other) {
|
||||
return (other instanceof CheckerFrameworkBasic);
|
||||
}
|
||||
public @java.lang.Override @org.checkerframework.dataflow.qual.SideEffectFree @java.lang.SuppressWarnings("all") int hashCode() {
|
||||
|
||||
@@ -10,7 +10,7 @@ class CheckerFrameworkSuperBuilder {
|
||||
private @java.lang.SuppressWarnings("all") java.util.ArrayList<String> names;
|
||||
public ParentBuilder() {
|
||||
}
|
||||
protected abstract @org.checkerframework.checker.builder.qual.ReturnsReceiver @org.checkerframework.dataflow.qual.SideEffectFree @java.lang.SuppressWarnings("all") B self();
|
||||
protected abstract @org.checkerframework.checker.builder.qual.ReturnsReceiver @org.checkerframework.dataflow.qual.Pure @java.lang.SuppressWarnings("all") B self();
|
||||
public abstract @org.checkerframework.dataflow.qual.SideEffectFree @java.lang.SuppressWarnings("all") C build(final @org.checkerframework.checker.builder.qual.CalledMethods({"y", "z"}) CheckerFrameworkSuperBuilder.Parent.ParentBuilder this);
|
||||
public @org.checkerframework.checker.builder.qual.ReturnsReceiver @java.lang.SuppressWarnings("all") B x(final @org.checkerframework.checker.builder.qual.NotCalledMethods("x") CheckerFrameworkSuperBuilder.Parent.ParentBuilder this, final int x) {
|
||||
this.x$value = x;
|
||||
@@ -53,7 +53,7 @@ class CheckerFrameworkSuperBuilder {
|
||||
private static final @java.lang.SuppressWarnings("all") class ParentBuilderImpl extends CheckerFrameworkSuperBuilder.Parent.ParentBuilder<CheckerFrameworkSuperBuilder.Parent, CheckerFrameworkSuperBuilder.Parent.ParentBuilderImpl> {
|
||||
private ParentBuilderImpl() {
|
||||
}
|
||||
protected @java.lang.Override @org.checkerframework.checker.builder.qual.ReturnsReceiver @org.checkerframework.dataflow.qual.SideEffectFree @java.lang.SuppressWarnings("all") CheckerFrameworkSuperBuilder.Parent.ParentBuilderImpl self() {
|
||||
protected @java.lang.Override @org.checkerframework.checker.builder.qual.ReturnsReceiver @org.checkerframework.dataflow.qual.Pure @java.lang.SuppressWarnings("all") CheckerFrameworkSuperBuilder.Parent.ParentBuilderImpl self() {
|
||||
return this;
|
||||
}
|
||||
public @java.lang.Override @org.checkerframework.dataflow.qual.SideEffectFree @java.lang.SuppressWarnings("all") CheckerFrameworkSuperBuilder.Parent build(final @org.checkerframework.checker.builder.qual.CalledMethods({"y", "z"}) CheckerFrameworkSuperBuilder.Parent.ParentBuilderImpl this) {
|
||||
@@ -99,7 +99,7 @@ class CheckerFrameworkSuperBuilder {
|
||||
private @java.lang.SuppressWarnings("all") int b;
|
||||
public ChildBuilder() {
|
||||
}
|
||||
protected abstract @java.lang.Override @org.checkerframework.checker.builder.qual.ReturnsReceiver @org.checkerframework.dataflow.qual.SideEffectFree @java.lang.SuppressWarnings("all") B self();
|
||||
protected abstract @java.lang.Override @org.checkerframework.checker.builder.qual.ReturnsReceiver @org.checkerframework.dataflow.qual.Pure @java.lang.SuppressWarnings("all") B self();
|
||||
public abstract @java.lang.Override @org.checkerframework.dataflow.qual.SideEffectFree @java.lang.SuppressWarnings("all") C build(final @org.checkerframework.checker.builder.qual.CalledMethods("b") CheckerFrameworkSuperBuilder.Child.ChildBuilder this);
|
||||
public @org.checkerframework.checker.builder.qual.ReturnsReceiver @java.lang.SuppressWarnings("all") B a(final @org.checkerframework.checker.builder.qual.NotCalledMethods("a") CheckerFrameworkSuperBuilder.Child.ChildBuilder this, final int a) {
|
||||
this.a$value = a;
|
||||
@@ -117,7 +117,7 @@ class CheckerFrameworkSuperBuilder {
|
||||
private static final @java.lang.SuppressWarnings("all") class ChildBuilderImpl extends CheckerFrameworkSuperBuilder.Child.ChildBuilder<CheckerFrameworkSuperBuilder.Child, CheckerFrameworkSuperBuilder.Child.ChildBuilderImpl> {
|
||||
private ChildBuilderImpl() {
|
||||
}
|
||||
protected @java.lang.Override @org.checkerframework.checker.builder.qual.ReturnsReceiver @org.checkerframework.dataflow.qual.SideEffectFree @java.lang.SuppressWarnings("all") CheckerFrameworkSuperBuilder.Child.ChildBuilderImpl self() {
|
||||
protected @java.lang.Override @org.checkerframework.checker.builder.qual.ReturnsReceiver @org.checkerframework.dataflow.qual.Pure @java.lang.SuppressWarnings("all") CheckerFrameworkSuperBuilder.Child.ChildBuilderImpl self() {
|
||||
return this;
|
||||
}
|
||||
public @java.lang.Override @org.checkerframework.dataflow.qual.SideEffectFree @java.lang.SuppressWarnings("all") CheckerFrameworkSuperBuilder.Child build(final @org.checkerframework.checker.builder.qual.CalledMethods("b") CheckerFrameworkSuperBuilder.Child.ChildBuilderImpl this) {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
//CONF: checkerframework = 3.0
|
||||
//CONF: checkerframework = 4.0
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
import lombok.With;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
//CONF: checkerframework = true
|
||||
//CONF: checkerframework = 4.0
|
||||
import java.util.List;
|
||||
import lombok.Builder;
|
||||
import lombok.Singular;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
//CONF: checkerframework = true
|
||||
//CONF: checkerframework = 4.0
|
||||
import java.util.List;
|
||||
import lombok.Singular;
|
||||
|
||||
|
||||
Reference in new issue
Block a user