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