Returns forbidden outside functions
This commit is contained in:
@@ -123,7 +123,7 @@ public class JetTypeInferrer {
|
||||
|
||||
@Nullable
|
||||
public JetType getType(@NotNull final JetScope scope, @NotNull JetExpression expression, boolean preferBlock, @Nullable JetType expectedType) {
|
||||
return new TypeInferrerVisitor(scope, preferBlock, DataFlowInfo.getEmpty(), expectedType, null).getType(expression);
|
||||
return new TypeInferrerVisitor(scope, preferBlock, DataFlowInfo.getEmpty(), expectedType, FORBIDDEN).getType(expression);
|
||||
}
|
||||
|
||||
public JetType getTypeWithNamespaces(@NotNull final JetScope scope, @NotNull JetExpression expression, boolean preferBlock) {
|
||||
|
||||
@@ -9,6 +9,10 @@ fun test1() : Any = {<error>return</error>}
|
||||
fun test2() : Any = @a {return@a 1}
|
||||
fun test3() : Any { <error>return</error> }
|
||||
|
||||
fun bbb() {
|
||||
return <error>1</error>
|
||||
}
|
||||
|
||||
fun foo(expr: StringBuilder): Int {
|
||||
val c = 'a'
|
||||
when(c) {
|
||||
@@ -105,3 +109,5 @@ fun blockReturnValueTypeMatch() : Int {
|
||||
return 1
|
||||
else return <error>1.0</error>
|
||||
}
|
||||
|
||||
val a = <error>return 1</error>
|
||||
@@ -92,8 +92,8 @@ public class JetTypeCheckerTest extends LightDaemonAnalyzerTestCase {
|
||||
|
||||
public void testJumps() throws Exception {
|
||||
assertType("throw e", JetStandardClasses.getNothingType());
|
||||
assertType("return", JetStandardClasses.getNothingType());
|
||||
assertType("return 1", JetStandardClasses.getNothingType());
|
||||
// assertType("return", JetStandardClasses.getNothingType());
|
||||
// assertType("return 1", JetStandardClasses.getNothingType());
|
||||
assertType("continue", JetStandardClasses.getNothingType());
|
||||
assertType("continue \"foo\"", JetStandardClasses.getNothingType());
|
||||
assertType("break", JetStandardClasses.getNothingType());
|
||||
@@ -105,7 +105,7 @@ public class JetTypeCheckerTest extends LightDaemonAnalyzerTestCase {
|
||||
assertType("if (true) 1 else 1", "Int");
|
||||
assertType("if (true) 1 else return", "Int");
|
||||
assertType("if (true) return else 1", "Int");
|
||||
assertType("if (true) return else return", "Nothing");
|
||||
assertType("if (true) throw Exception() else throw Exception()", "Nothing");
|
||||
|
||||
assertType("if (true) 1 else null", "Int?");
|
||||
assertType("if (true) null else null", "Nothing?");
|
||||
|
||||
Reference in New Issue
Block a user