mirror of
https://github.com/tiennm99/lombok.git
synced 2026-10-13 08:15:48 +00:00
a initialization of variable like "var o = null;" will throw the compile time error "variable initializer is 'null'"
This commit is contained in:
1 parent
67371e5841
commit
69eeb9edc7
7 files changed
+25
-6
No files matched your search
@@ -23,6 +23,7 @@ package lombok.eclipse.handlers;
|
||||
|
||||
import lombok.ConfigurationKeys;
|
||||
import lombok.core.HandlerPriority;
|
||||
import lombok.core.LombokNode;
|
||||
import lombok.eclipse.DeferUntilPostDiet;
|
||||
import lombok.eclipse.EclipseASTAdapter;
|
||||
import lombok.eclipse.EclipseASTVisitor;
|
||||
@@ -33,11 +34,13 @@ import org.eclipse.jdt.internal.compiler.ast.ArrayInitializer;
|
||||
import org.eclipse.jdt.internal.compiler.ast.ForStatement;
|
||||
import org.eclipse.jdt.internal.compiler.ast.ForeachStatement;
|
||||
import org.eclipse.jdt.internal.compiler.ast.LocalDeclaration;
|
||||
import org.eclipse.jdt.internal.compiler.ast.NullLiteral;
|
||||
import org.eclipse.jdt.internal.compiler.ast.TypeReference;
|
||||
import org.mangosdk.spi.ProviderFor;
|
||||
|
||||
import static lombok.core.handlers.HandlerUtil.handleFlagUsage;
|
||||
import static lombok.eclipse.handlers.EclipseHandlerUtil.typeMatches;
|
||||
import static lombok.javac.handlers.HandleVal.VARIABLE_INITIALIZER_IS_NULL;
|
||||
|
||||
/*
|
||||
* This class just handles 3 basic error cases. The real meat of eclipse 'val' support is in {@code PatchVal} and {@code PatchValEclipse}.
|
||||
@@ -81,5 +84,11 @@ public class HandleVal extends EclipseASTAdapter {
|
||||
if (local.initialization != null && local.initialization.getClass().getName().equals("org.eclipse.jdt.internal.compiler.ast.LambdaExpression")) {
|
||||
localNode.addError("'" + annotation + "' is not allowed with lambda expressions.");
|
||||
}
|
||||
|
||||
if(isVar && local.initialization instanceof NullLiteral) addVarNullInitMessage(localNode);
|
||||
}
|
||||
|
||||
public static void addVarNullInitMessage(LombokNode localNode) {
|
||||
localNode.addError(VARIABLE_INITIALIZER_IS_NULL);
|
||||
}
|
||||
}
|
||||
@@ -22,7 +22,10 @@
|
||||
package lombok.javac.handlers;
|
||||
|
||||
import static lombok.core.handlers.HandlerUtil.*;
|
||||
import static lombok.eclipse.handlers.HandleVal.addVarNullInitMessage;
|
||||
import static lombok.javac.handlers.JavacHandlerUtil.*;
|
||||
|
||||
import com.sun.tools.javac.tree.JCTree.JCLiteral;
|
||||
import lombok.ConfigurationKeys;
|
||||
import lombok.experimental.var;
|
||||
import lombok.val;
|
||||
@@ -51,7 +54,9 @@ import com.sun.tools.javac.util.List;
|
||||
@HandlerPriority(65536) // 2^16; resolution needs to work, so if the RHS expression is i.e. a call to a generated getter, we have to run after that getter has been generated.
|
||||
@ResolutionResetNeeded
|
||||
public class HandleVal extends JavacASTAdapter {
|
||||
|
||||
|
||||
public static final String VARIABLE_INITIALIZER_IS_NULL = "variable initializer is 'null'";
|
||||
|
||||
private static boolean eq(String typeTreeToString, String key) {
|
||||
return (typeTreeToString.equals(key) || typeTreeToString.equals("lombok." + key));
|
||||
}
|
||||
@@ -118,6 +123,9 @@ public class HandleVal extends JavacASTAdapter {
|
||||
try {
|
||||
if (rhsOfEnhancedForLoop == null) {
|
||||
if (local.init.type == null) {
|
||||
if (isVar && local.init instanceof JCLiteral && ((JCLiteral) local.init).value == null) {
|
||||
addVarNullInitMessage(localNode);
|
||||
}
|
||||
JavacResolution resolver = new JavacResolution(localNode.getContext());
|
||||
try {
|
||||
type = ((JCExpression) resolver.resolveMethodMember(localNode).get(local.init)).type;
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class VarNullInit {
|
||||
|
||||
public class VarNullInit {
|
||||
void method() {
|
||||
java.lang.Object x = null;
|
||||
}
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import lombok.experimental.var;
|
||||
|
||||
class VarNullInit {
|
||||
VarNullInit() {
|
||||
public class VarNullInit {
|
||||
public VarNullInit() {
|
||||
super();
|
||||
}
|
||||
void method() {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
//CONF: lombok.var.flagUsage = ALLOW
|
||||
import lombok.experimental.var;
|
||||
|
||||
class VarNullInit {
|
||||
public class VarNullInit {
|
||||
void method() {
|
||||
var x = null;
|
||||
}
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
6 variable initializer is 'null'
|
||||
@@ -0,0 +1 @@
|
||||
6 variable initializer is 'null'
|
||||
Reference in new issue
Block a user