diff options
author | Roel Spilker <r.spilker@gmail.com> | 2009-08-01 02:10:29 +0200 |
---|---|---|
committer | Roel Spilker <r.spilker@gmail.com> | 2009-08-01 02:10:29 +0200 |
commit | c4d97b008afc85e495784929c312c6828aefde1d (patch) | |
tree | 920c80009a00c0a27e03c8f2aeaae459c28d7ad4 /src/lombok/javac | |
parent | f2c837bb47771a7eba5ad5a885af162d8d133559 (diff) | |
download | lombok-c4d97b008afc85e495784929c312c6828aefde1d.tar.gz lombok-c4d97b008afc85e495784929c312c6828aefde1d.tar.bz2 lombok-c4d97b008afc85e495784929c312c6828aefde1d.zip |
Moved the check to see if a variable is null to the PKG utility classes
Diffstat (limited to 'src/lombok/javac')
-rw-r--r-- | src/lombok/javac/handlers/HandleSetter.java | 15 | ||||
-rw-r--r-- | src/lombok/javac/handlers/PKG.java | 11 |
2 files changed, 18 insertions, 8 deletions
diff --git a/src/lombok/javac/handlers/HandleSetter.java b/src/lombok/javac/handlers/HandleSetter.java index 2f41e716..9fb995e4 100644 --- a/src/lombok/javac/handlers/HandleSetter.java +++ b/src/lombok/javac/handlers/HandleSetter.java @@ -21,7 +21,12 @@ */ package lombok.javac.handlers; -import static lombok.javac.handlers.PKG.*; +import static lombok.javac.handlers.PKG.findNonNullAnnotations; +import static lombok.javac.handlers.PKG.generateNullCheck; +import static lombok.javac.handlers.PKG.injectMethod; +import static lombok.javac.handlers.PKG.methodExists; +import static lombok.javac.handlers.PKG.toJavacModifier; +import static lombok.javac.handlers.PKG.toSetterName; import lombok.AccessLevel; import lombok.Setter; import lombok.core.AnnotationValues; @@ -34,8 +39,6 @@ import lombok.javac.JavacAST.Node; import org.mangosdk.spi.ProviderFor; import com.sun.tools.javac.code.Flags; -import com.sun.tools.javac.code.TypeTags; -import com.sun.tools.javac.tree.JCTree; import com.sun.tools.javac.tree.TreeMaker; import com.sun.tools.javac.tree.JCTree.JCAnnotation; import com.sun.tools.javac.tree.JCTree.JCAssign; @@ -127,11 +130,7 @@ public class HandleSetter implements JavacAnnotationHandler<Setter> { statements = List.<JCStatement>of(treeMaker.Exec(assign)); } else { - JCExpression npe = chainDots(treeMaker, field, "java", "lang", "NullPointerException"); - JCTree exception = treeMaker.NewClass(null, List.<JCExpression>nil(), npe, List.<JCExpression>of(treeMaker.Literal(fieldDecl.name.toString())), null); - JCStatement throwStatement = treeMaker.Throw(exception); - JCStatement nullCheck = treeMaker.If(treeMaker.Binary(JCTree.EQ, treeMaker.Ident(fieldDecl.name), treeMaker.Literal(TypeTags.BOT, null)), throwStatement, null); - statements = List.<JCStatement>of(nullCheck, treeMaker.Exec(assign)); + statements = List.<JCStatement>of(generateNullCheck(treeMaker, field), treeMaker.Exec(assign)); } JCBlock methodBody = treeMaker.Block(0, statements); diff --git a/src/lombok/javac/handlers/PKG.java b/src/lombok/javac/handlers/PKG.java index ea794296..006e92a3 100644 --- a/src/lombok/javac/handlers/PKG.java +++ b/src/lombok/javac/handlers/PKG.java @@ -30,14 +30,17 @@ import lombok.javac.JavacAST; import lombok.javac.JavacAST.Node; import com.sun.tools.javac.code.Flags; +import com.sun.tools.javac.code.TypeTags; import com.sun.tools.javac.tree.JCTree; import com.sun.tools.javac.tree.TreeMaker; import com.sun.tools.javac.tree.JCTree.JCAnnotation; import com.sun.tools.javac.tree.JCTree.JCClassDecl; import com.sun.tools.javac.tree.JCTree.JCExpression; import com.sun.tools.javac.tree.JCTree.JCMethodDecl; +import com.sun.tools.javac.tree.JCTree.JCStatement; import com.sun.tools.javac.tree.JCTree.JCVariableDecl; import com.sun.tools.javac.util.List; +import com.sun.tools.javac.util.Name; /** * Container for static utility methods relevant to this package. @@ -269,4 +272,12 @@ class PKG { } return result; } + + static JCStatement generateNullCheck(TreeMaker treeMaker, JavacAST.Node variable) { + Name fieldName = ((JCVariableDecl) variable.get()).name; + JCExpression npe = chainDots(treeMaker, variable, "java", "lang", "NullPointerException"); + JCTree exception = treeMaker.NewClass(null, List.<JCExpression>nil(), npe, List.<JCExpression>of(treeMaker.Literal(fieldName.toString())), null); + JCStatement throwStatement = treeMaker.Throw(exception); + return treeMaker.If(treeMaker.Binary(JCTree.EQ, treeMaker.Ident(fieldName), treeMaker.Literal(TypeTags.BOT, null)), throwStatement, null); + } } |