From 59f690abc4f5072381db0f82fcab7161b3f650f0 Mon Sep 17 00:00:00 2001 From: peter Date: Mon, 8 Mar 2010 20:45:19 +0000 Subject: [PATCH] @NotNull assertion fix --- .../psi/impl/statements/params/GrParameterImpl.java | 6 +++++- .../lang/psi/impl/types/GrClosureSignatureImpl.java | 10 +++++++--- .../plugins/groovy/lang/GroovyHighlightingTest.java | 2 ++ .../groovy/testdata/highlighting/EachOverRange.groovy | 1 + 4 files changed, 15 insertions(+), 4 deletions(-) create mode 100644 plugins/groovy/testdata/highlighting/EachOverRange.groovy diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/params/GrParameterImpl.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/params/GrParameterImpl.java index 81884a569f1a..5b3e5fa90e5f 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/params/GrParameterImpl.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/params/GrParameterImpl.java @@ -257,7 +257,11 @@ public class GrParameterImpl extends GrVariableImpl implements GrParameter { GrExpression left = range.getLeftOperand(); GrExpression right = range.getRightOperand(); if (right != null) { - return TypesUtil.getLeastUpperBound(left.getType(), right.getType(), range.getManager()); + final PsiType leftType = left.getType(); + final PsiType rightType = right.getType(); + if (leftType != null && rightType != null) { + return TypesUtil.getLeastUpperBound(leftType, rightType, range.getManager()); + } } return null; } diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/types/GrClosureSignatureImpl.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/types/GrClosureSignatureImpl.java index 927bb6ff2fc9..d3e06d35bcec 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/types/GrClosureSignatureImpl.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/types/GrClosureSignatureImpl.java @@ -133,9 +133,13 @@ public class GrClosureSignatureImpl implements GrClosureSignature { boolean opt = parameters1[i].isOptional() && parameters2[i].isOptional(); params[i] = new GrClosureParameterImpl(/*null, */type, opt, null); } - PsiType returnType = TypesUtil.getLeastUpperBound(signature1.getReturnType(), signature2.getReturnType(), manager); - boolean isVarArgs = signature1.isVarargs() && signature2.isVarargs(); - return new GrClosureSignatureImpl(params, returnType, isVarArgs); + final PsiType s1type = signature1.getReturnType(); + final PsiType s2type = signature2.getReturnType(); + if (s1type != null && s2type != null) { + PsiType returnType = TypesUtil.getLeastUpperBound(s1type, s2type, manager); + boolean isVarArgs = signature1.isVarargs() && signature2.isVarargs(); + return new GrClosureSignatureImpl(params, returnType, isVarArgs); + } } return null; //todo } diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/GroovyHighlightingTest.java b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/GroovyHighlightingTest.java index eff21bf699a3..84de910502fd 100644 --- a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/GroovyHighlightingTest.java +++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/GroovyHighlightingTest.java @@ -192,6 +192,8 @@ public class GroovyHighlightingTest extends LightCodeInsightFixtureTestCase { public void testGstringAssignableToStringInClosureParameter() throws Exception{doTest();} public void testEverythingAssignableToString() throws Exception {doTest(new GroovyAssignabilityCheckInspection());} + public void testEachOverRange() throws Exception {doTest();} + public void testMethodCallWithDefaultParameters() throws Exception {doTest();} public void testClosureWithDefaultParameters() throws Exception {doTest();} public void testClosureCallMethodWithInapplicableArguments() throws Exception {doTest();} diff --git a/plugins/groovy/testdata/highlighting/EachOverRange.groovy b/plugins/groovy/testdata/highlighting/EachOverRange.groovy new file mode 100644 index 000000000000..cb138ebbc80b --- /dev/null +++ b/plugins/groovy/testdata/highlighting/EachOverRange.groovy @@ -0,0 +1 @@ +(date1..date2).each { it } \ No newline at end of file