diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetControlFlowProcessor.java b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetControlFlowProcessor.java index f5bc5122eda..7b1945f9351 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetControlFlowProcessor.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetControlFlowProcessor.java @@ -35,26 +35,30 @@ public class JetControlFlowProcessor { this.trace = trace; } - public void generate(@NotNull JetDeclaration subroutineElement, @NotNull JetExpression body) { - generateSubroutineControlFlow(subroutineElement, Collections.singletonList(body)); - } - - public void generateSubroutineControlFlow(@NotNull JetDeclaration subroutineElement, @NotNull List body) { - builder.enterSubroutine(subroutineElement); - for (JetElement statement : body) { - statement.accept(new CFPVisitor(false)); + public void generate(@NotNull JetDeclaration subroutine) { + builder.enterSubroutine(subroutine); + if (subroutine instanceof JetDeclarationWithBody) { + JetDeclarationWithBody declarationWithBody = (JetDeclarationWithBody) subroutine; + CFPVisitor cfpVisitor = new CFPVisitor(false); + List valueParameters = declarationWithBody.getValueParameters(); + for (JetParameter valueParameter : valueParameters) { + valueParameter.accept(cfpVisitor); + } + JetExpression bodyExpression = declarationWithBody.getBodyExpression(); + if (bodyExpression != null) { + bodyExpression.accept(cfpVisitor); + } } - builder.exitSubroutine(subroutineElement); + else { + subroutine.accept(new CFPVisitor(false)); + } + builder.exitSubroutine(subroutine); } - private void processLocalDeclaration(@NotNull JetDeclaration subroutineElement, @NotNull JetExpression body) { - processLocalDeclaration(subroutineElement, Collections.singletonList(body)); - } - - private void processLocalDeclaration(@NotNull JetDeclaration subroutineElement, @NotNull List body) { + private void processLocalDeclaration(@NotNull JetDeclaration subroutine) { Label afterDeclaration = builder.createUnboundLabel(); builder.nondeterministicJump(afterDeclaration); - generateSubroutineControlFlow(subroutineElement, body); + generate(subroutine); builder.bindLabel(afterDeclaration); } @@ -569,6 +573,12 @@ public class JetControlFlowProcessor { } } + @Override + public void visitParameter(JetParameter parameter) { + builder.declare(parameter); + builder.write(parameter, parameter); + } + @Override public void visitBlockExpression(JetBlockExpression expression) { List statements = expression.getStatements(); @@ -582,20 +592,13 @@ public class JetControlFlowProcessor { @Override public void visitNamedFunction(JetNamedFunction function) { - JetExpression bodyExpression = function.getBodyExpression(); - if (bodyExpression != null) { - processLocalDeclaration(function, bodyExpression); - } + processLocalDeclaration(function); } @Override public void visitFunctionLiteralExpression(JetFunctionLiteralExpression expression) { JetFunctionLiteral functionLiteral = expression.getFunctionLiteral(); - JetBlockExpression bodyExpression = functionLiteral.getBodyExpression(); - if (bodyExpression != null) { - List statements = bodyExpression.getStatements(); - processLocalDeclaration(functionLiteral, statements); - } + processLocalDeclaration(functionLiteral); builder.read(expression); } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetFlowInformationProvider.java b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetFlowInformationProvider.java index 7b8f6fc2b0b..4c260399c57 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetFlowInformationProvider.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetFlowInformationProvider.java @@ -19,6 +19,7 @@ import org.jetbrains.jet.lang.resolve.BindingTrace; import org.jetbrains.jet.lang.types.JetStandardClasses; import org.jetbrains.jet.lang.types.JetType; import org.jetbrains.jet.lexer.JetTokens; +import org.jetbrains.jet.plugin.JetMainDetector; import java.util.*; @@ -68,7 +69,7 @@ public class JetFlowInformationProvider { } }; JetControlFlowInstructionsGenerator instructionsGenerator = new JetControlFlowInstructionsGenerator(wrappedTrace); - new JetControlFlowProcessor(trace, instructionsGenerator).generate(declaration, bodyExpression); + new JetControlFlowProcessor(trace, instructionsGenerator).generate(declaration); wrappedTrace.close(); } @@ -479,13 +480,27 @@ public class JetFlowInformationProvider { } else if (instruction instanceof VariableDeclarationInstruction) { JetDeclaration element = ((VariableDeclarationInstruction) instruction).getVariableDeclarationElement(); - if (element instanceof JetProperty) { + if (element instanceof JetNamedDeclaration) { PsiElement nameIdentifier = ((JetNamedDeclaration) element).getNameIdentifier(); PsiElement elementToMark = nameIdentifier != null ? nameIdentifier : element; if (enterData.get(variableDescriptor) == VariableStatus.UNUSED) { - trace.report(Errors.UNUSED_VARIABLE.on((JetNamedDeclaration) element, elementToMark, variableDescriptor)); + if (element instanceof JetProperty) { + trace.report(Errors.UNUSED_VARIABLE.on((JetProperty) element, elementToMark, variableDescriptor)); + } + else if (element instanceof JetParameter) { + PsiElement psiElement = element.getParent().getParent(); + if (psiElement instanceof JetFunction) { + boolean isMain = (psiElement instanceof JetNamedFunction) && JetMainDetector.isMain((JetNamedFunction) psiElement); + DeclarationDescriptor descriptor = trace.get(BindingContext.DECLARATION_TO_DESCRIPTOR, psiElement); + assert descriptor instanceof FunctionDescriptor; + FunctionDescriptor functionDescriptor = (FunctionDescriptor) descriptor; + if (!isMain && !functionDescriptor.getModality().isOverridable() && functionDescriptor.getOverriddenDescriptors().isEmpty()) { + trace.report(Errors.UNUSED_PARAMETER.on((JetParameter) element, elementToMark, variableDescriptor)); + } + } + } } - else if (enterData.get(variableDescriptor) == VariableStatus.WRITTEN) { + else if (enterData.get(variableDescriptor) == VariableStatus.WRITTEN && element instanceof JetProperty) { trace.report(Errors.ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE.on((JetNamedDeclaration) element, elementToMark, variableDescriptor)); } } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/Errors.java b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/Errors.java index fc8ce9013f2..786acc783b2 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/Errors.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/Errors.java @@ -147,8 +147,9 @@ public interface Errors { PsiElementOnlyDiagnosticFactory3 VIRTUAL_MEMBER_HIDDEN = PsiElementOnlyDiagnosticFactory3.create(ERROR, "''{0}'' hides ''{1}'' in class {2} and needs 'override' modifier", DescriptorRenderer.TEXT); PsiElementOnlyDiagnosticFactory1 UNINITIALIZED_VARIABLE = PsiElementOnlyDiagnosticFactory1.create(ERROR, "Variable ''{0}'' must be initialized", NAME); - PsiElementOnlyDiagnosticFactory1 UNUSED_VARIABLE = PsiElementOnlyDiagnosticFactory1.create(WARNING, "Variable ''{0}'' is never used", NAME); - PsiElementOnlyDiagnosticFactory1 ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE = PsiElementOnlyDiagnosticFactory1.create(WARNING, "Variable ''{0}'' is assigned but never accessed", NAME); + UnusedElementDiagnosticFactory UNUSED_VARIABLE = UnusedElementDiagnosticFactory.create(WARNING, "Variable ''{0}'' is never used", NAME); + UnusedElementDiagnosticFactory UNUSED_PARAMETER = UnusedElementDiagnosticFactory.create(WARNING, "Parameter ''{0}'' is never used", NAME); + UnusedElementDiagnosticFactory ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE = UnusedElementDiagnosticFactory.create(WARNING, "Variable ''{0}'' is assigned but never accessed", NAME); PsiElementOnlyDiagnosticFactory2 UNUSED_VALUE = new PsiElementOnlyDiagnosticFactory2(WARNING, "The value ''{0}'' assigned to ''{1}'' is never used", NAME) { @Override protected String makeMessageForA(@NotNull JetElement element) { diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/UnusedElementDiagnosticFactory.java b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/UnusedElementDiagnosticFactory.java new file mode 100644 index 00000000000..d47ea66728f --- /dev/null +++ b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/UnusedElementDiagnosticFactory.java @@ -0,0 +1,23 @@ +package org.jetbrains.jet.lang.diagnostics; + +import com.intellij.psi.PsiElement; +/** + * @author svtk + */ +public class UnusedElementDiagnosticFactory extends PsiElementOnlyDiagnosticFactory1 { + public static UnusedElementDiagnosticFactory create(Severity severity, String messageStub) { + return new UnusedElementDiagnosticFactory(severity, messageStub); + } + + public static UnusedElementDiagnosticFactory create(Severity severity, String messageStub, Renderer renderer) { + return new UnusedElementDiagnosticFactory(severity, messageStub, renderer); + } + + public UnusedElementDiagnosticFactory(Severity severity, String message, Renderer renderer) { + super(severity, message, renderer); + } + + protected UnusedElementDiagnosticFactory(Severity severity, String message) { + super(severity, message); + } +} diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BindingContextUtils.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BindingContextUtils.java index 4b24227c3cd..9635f3edafe 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BindingContextUtils.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BindingContextUtils.java @@ -5,6 +5,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor; import org.jetbrains.jet.lang.descriptors.FunctionDescriptor; +import org.jetbrains.jet.lang.descriptors.VariableAsFunctionDescriptor; import org.jetbrains.jet.lang.descriptors.VariableDescriptor; import org.jetbrains.jet.lang.psi.*; import org.jetbrains.jet.lang.types.JetType; @@ -43,6 +44,9 @@ public class BindingContextUtils { if (descriptor instanceof VariableDescriptor) { return (VariableDescriptor) descriptor; } + if (descriptor instanceof VariableAsFunctionDescriptor) { + return ((VariableAsFunctionDescriptor) descriptor).getVariableDescriptor(); + } return null; } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ExpressionTypingVisitorDispatcher.java b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ExpressionTypingVisitorDispatcher.java index bdd82e73b85..36db4c054db 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ExpressionTypingVisitorDispatcher.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ExpressionTypingVisitorDispatcher.java @@ -1,7 +1,6 @@ package org.jetbrains.jet.lang.types.expressions; import com.intellij.lang.ASTNode; -import com.intellij.util.Function; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.lang.psi.*; @@ -14,7 +13,6 @@ import org.jetbrains.jet.lang.types.ErrorUtils; import org.jetbrains.jet.lang.types.JetType; import org.jetbrains.jet.util.lazy.ReenteringLazyValueComputationException; -import static org.jetbrains.jet.lang.diagnostics.Errors.ELSE_MISPLACED_IN_WHEN; import static org.jetbrains.jet.lang.diagnostics.Errors.TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM; /** @@ -22,11 +20,9 @@ import static org.jetbrains.jet.lang.diagnostics.Errors.TYPECHECKER_HAS_RUN_INTO */ public class ExpressionTypingVisitorDispatcher extends JetVisitor implements ExpressionTypingInternals { - private static ExpressionTypingVisitorDispatcher BASIC_DISPATCHER = new ExpressionTypingVisitorDispatcher(null); - @NotNull public static ExpressionTypingFacade create() { - return BASIC_DISPATCHER; + return new ExpressionTypingVisitorDispatcher(null); } @NotNull diff --git a/compiler/frontend/src/org/jetbrains/jet/plugin/JetMainDetector.java b/compiler/frontend/src/org/jetbrains/jet/plugin/JetMainDetector.java index ec98c2d8eff..9e9d285bd23 100644 --- a/compiler/frontend/src/org/jetbrains/jet/plugin/JetMainDetector.java +++ b/compiler/frontend/src/org/jetbrains/jet/plugin/JetMainDetector.java @@ -17,17 +17,20 @@ public class JetMainDetector { public static boolean hasMain(List declarations) { for (JetDeclaration declaration : declarations) { if (declaration instanceof JetNamedFunction) { - JetNamedFunction function = (JetNamedFunction) declaration; - if ("main".equals(function.getName())) { - List parameters = function.getValueParameters(); - if (parameters.size() == 1) { - JetTypeReference reference = parameters.get(0).getTypeReference(); - if (reference != null && reference.getText().equals("Array")) { // TODO correct check - return true; - } - } - } + if (isMain((JetNamedFunction) declaration)) return true; + } + } + return false; + } + public static boolean isMain(JetNamedFunction function) { + if ("main".equals(function.getName())) { + List parameters = function.getValueParameters(); + if (parameters.size() == 1) { + JetTypeReference reference = parameters.get(0).getTypeReference(); + if (reference != null && reference.getText().equals("Array")) { // TODO correct check + return true; + } } } return false; diff --git a/compiler/testData/cfg/Basic.instructions b/compiler/testData/cfg/Basic.instructions index e199fb184fe..970f555349b 100644 --- a/compiler/testData/cfg/Basic.instructions +++ b/compiler/testData/cfg/Basic.instructions @@ -31,8 +31,10 @@ fun f(a : Boolean) : Unit { } --------------------- l0: - NEXT:[r(1)] PREV:[] - r(1) NEXT:[r(a)] PREV:[] + NEXT:[v(a : Boolean)] PREV:[] + v(a : Boolean) NEXT:[w(a)] PREV:[] + w(a) NEXT:[r(1)] PREV:[v(a : Boolean)] + r(1) NEXT:[r(a)] PREV:[w(a)] r(a) NEXT:[r(2)] PREV:[r(1)] r(2) NEXT:[r(lng)] PREV:[r(a)] r(lng) NEXT:[r(2.lng)] PREV:[r(2)] @@ -92,14 +94,18 @@ sink: fun foo(a : Boolean, b : Int) : Unit {} --------------------- l0: - NEXT:[read (Unit)] PREV:[] - read (Unit) NEXT:[] PREV:[] + NEXT:[v(a : Boolean)] PREV:[] + v(a : Boolean) NEXT:[w(a)] PREV:[] + w(a) NEXT:[v(b : Int)] PREV:[v(a : Boolean)] + v(b : Int) NEXT:[w(b)] PREV:[w(a)] + w(b) NEXT:[read (Unit)] PREV:[v(b : Int)] + read (Unit) NEXT:[] PREV:[w(b)] l1: - NEXT:[] PREV:[read (Unit)] + NEXT:[] PREV:[read (Unit)] error: - NEXT:[] PREV:[] + NEXT:[] PREV:[] sink: - NEXT:[] PREV:[] + NEXT:[] PREV:[] ===================== == genfun == fun genfun() : Unit {} @@ -118,12 +124,14 @@ sink: fun flfun(f : fun () : Any) : Unit {} --------------------- l0: - NEXT:[read (Unit)] PREV:[] - read (Unit) NEXT:[] PREV:[] + NEXT:[v(f : fun () : Any)] PREV:[] + v(f : fun () : Any) NEXT:[w(f)] PREV:[] + w(f) NEXT:[read (Unit)] PREV:[v(f : fun () : Any)] + read (Unit) NEXT:[] PREV:[w(f)] l1: - NEXT:[] PREV:[read (Unit)] + NEXT:[] PREV:[read (Unit)] error: - NEXT:[] PREV:[] + NEXT:[] PREV:[] sink: - NEXT:[] PREV:[] + NEXT:[] PREV:[] ===================== diff --git a/compiler/testData/cfg/Finally.instructions b/compiler/testData/cfg/Finally.instructions index b8c3f5fdf29..74f7c7177c4 100644 --- a/compiler/testData/cfg/Finally.instructions +++ b/compiler/testData/cfg/Finally.instructions @@ -388,8 +388,10 @@ fun t8(a : Int) { } --------------------- l0: - NEXT:[r(1)] PREV:[] - r(1) NEXT:[r(a)] PREV:[] + NEXT:[v(a : Int)] PREV:[] + v(a : Int) NEXT:[w(a)] PREV:[] + w(a) NEXT:[r(1)] PREV:[v(a : Int)] + r(1) NEXT:[r(a)] PREV:[w(a)] r(a) NEXT:[r(..)] PREV:[r(1)] r(..) NEXT:[r(1..a)] PREV:[r(a)] r(1..a) NEXT:[v(i)] PREV:[r(..)] @@ -439,8 +441,10 @@ fun t9(a : Int) { } --------------------- l0: - NEXT:[r(1)] PREV:[] - r(1) NEXT:[r(a)] PREV:[] + NEXT:[v(a : Int)] PREV:[] + v(a : Int) NEXT:[w(a)] PREV:[] + w(a) NEXT:[r(1)] PREV:[v(a : Int)] + r(1) NEXT:[r(a)] PREV:[w(a)] r(a) NEXT:[r(..)] PREV:[r(1)] r(..) NEXT:[r(1..a)] PREV:[r(a)] r(1..a) NEXT:[v(i)] PREV:[r(..)] @@ -489,8 +493,10 @@ fun t10(a : Int) { } --------------------- l0: - NEXT:[r(1)] PREV:[] - r(1) NEXT:[r(a)] PREV:[] + NEXT:[v(a : Int)] PREV:[] + v(a : Int) NEXT:[w(a)] PREV:[] + w(a) NEXT:[r(1)] PREV:[v(a : Int)] + r(1) NEXT:[r(a)] PREV:[w(a)] r(a) NEXT:[r(..)] PREV:[r(1)] r(..) NEXT:[r(1..a)] PREV:[r(a)] r(1..a) NEXT:[v(i)] PREV:[r(..)] @@ -747,8 +753,10 @@ fun doSmth(i: Int) { } --------------------- l0: - NEXT:[read (Unit)] PREV:[] - read (Unit) NEXT:[] PREV:[] + NEXT:[v(i: Int)] PREV:[] + v(i: Int) NEXT:[w(i)] PREV:[] + w(i) NEXT:[read (Unit)] PREV:[v(i: Int)] + read (Unit) NEXT:[] PREV:[w(i)] l1: NEXT:[] PREV:[read (Unit)] error: diff --git a/compiler/testData/cfg/For.instructions b/compiler/testData/cfg/For.instructions index 7b782c13b55..6a8ceb0d916 100644 --- a/compiler/testData/cfg/For.instructions +++ b/compiler/testData/cfg/For.instructions @@ -34,8 +34,10 @@ sink: fun doSmth(i: Int) {} --------------------- l0: - NEXT:[read (Unit)] PREV:[] - read (Unit) NEXT:[] PREV:[] + NEXT:[v(i: Int)] PREV:[] + v(i: Int) NEXT:[w(i)] PREV:[] + w(i) NEXT:[read (Unit)] PREV:[v(i: Int)] + read (Unit) NEXT:[] PREV:[w(i)] l1: NEXT:[] PREV:[read (Unit)] error: diff --git a/compiler/testData/cfg/If.instructions b/compiler/testData/cfg/If.instructions index b188c60a1a4..5d3c31f3bc1 100644 --- a/compiler/testData/cfg/If.instructions +++ b/compiler/testData/cfg/If.instructions @@ -17,8 +17,10 @@ fun t1(b: Boolean) { } --------------------- l0: - NEXT:[v(var u: String)] PREV:[] - v(var u: String) NEXT:[r(b)] PREV:[] + NEXT:[v(b: Boolean)] PREV:[] + v(b: Boolean) NEXT:[w(b)] PREV:[] + w(b) NEXT:[v(var u: String)] PREV:[v(b: Boolean)] + v(var u: String) NEXT:[r(b)] PREV:[w(b)] r(b) NEXT:[jf(l2)] PREV:[v(var u: String)] jf(l2) NEXT:[read (Unit), r("s")] PREV:[r(b)] r("s") NEXT:[w(u)] PREV:[jf(l2)] @@ -63,45 +65,49 @@ fun t2(b: Boolean) { } --------------------- l0: - NEXT:[v(val i = 3)] PREV:[] - v(val i = 3) NEXT:[r(3)] PREV:[] - r(3) NEXT:[w(i)] PREV:[v(val i = 3)] - w(i) NEXT:[r(b)] PREV:[r(3)] - r(b) NEXT:[jf(l2)] PREV:[w(i)] - jf(l2) NEXT:[read (Unit), ret l1] PREV:[r(b)] - ret l1 NEXT:[] PREV:[jf(l2)] -* jmp(l3) NEXT:[r(i)] PREV:[] + NEXT:[v(b: Boolean)] PREV:[] + v(b: Boolean) NEXT:[w(b)] PREV:[] + w(b) NEXT:[v(val i = 3)] PREV:[v(b: Boolean)] + v(val i = 3) NEXT:[r(3)] PREV:[w(b)] + r(3) NEXT:[w(i)] PREV:[v(val i = 3)] + w(i) NEXT:[r(b)] PREV:[r(3)] + r(b) NEXT:[jf(l2)] PREV:[w(i)] + jf(l2) NEXT:[read (Unit), ret l1] PREV:[r(b)] + ret l1 NEXT:[] PREV:[jf(l2)] +* jmp(l3) NEXT:[r(i)] PREV:[] l2: - read (Unit) NEXT:[r(i)] PREV:[jf(l2)] + read (Unit) NEXT:[r(i)] PREV:[jf(l2)] l3: - r(i) NEXT:[r(doSmth)] PREV:[read (Unit)] - r(doSmth) NEXT:[r(doSmth(i))] PREV:[r(i)] - r(doSmth(i)) NEXT:[r(i)] PREV:[r(doSmth)] - r(i) NEXT:[r(i is Int)] PREV:[r(doSmth(i))] - r(i is Int) NEXT:[jf(l4)] PREV:[r(i)] - jf(l4) NEXT:[read (Unit), ret l1] PREV:[r(i is Int)] - ret l1 NEXT:[] PREV:[jf(l4)] -* jmp(l5) NEXT:[] PREV:[] + r(i) NEXT:[r(doSmth)] PREV:[read (Unit)] + r(doSmth) NEXT:[r(doSmth(i))] PREV:[r(i)] + r(doSmth(i)) NEXT:[r(i)] PREV:[r(doSmth)] + r(i) NEXT:[r(i is Int)] PREV:[r(doSmth(i))] + r(i is Int) NEXT:[jf(l4)] PREV:[r(i)] + jf(l4) NEXT:[read (Unit), ret l1] PREV:[r(i is Int)] + ret l1 NEXT:[] PREV:[jf(l4)] +* jmp(l5) NEXT:[] PREV:[] l4: - read (Unit) NEXT:[] PREV:[jf(l4)] + read (Unit) NEXT:[] PREV:[jf(l4)] l1: l5: - NEXT:[] PREV:[ret l1, ret l1, read (Unit)] + NEXT:[] PREV:[ret l1, ret l1, read (Unit)] error: - NEXT:[] PREV:[] + NEXT:[] PREV:[] sink: - NEXT:[] PREV:[] + NEXT:[] PREV:[] ===================== == doSmth == fun doSmth(s: String) {} --------------------- l0: - NEXT:[read (Unit)] PREV:[] - read (Unit) NEXT:[] PREV:[] + NEXT:[v(s: String)] PREV:[] + v(s: String) NEXT:[w(s)] PREV:[] + w(s) NEXT:[read (Unit)] PREV:[v(s: String)] + read (Unit) NEXT:[] PREV:[w(s)] l1: - NEXT:[] PREV:[read (Unit)] + NEXT:[] PREV:[read (Unit)] error: - NEXT:[] PREV:[] + NEXT:[] PREV:[] sink: - NEXT:[] PREV:[] + NEXT:[] PREV:[] ===================== diff --git a/compiler/testData/cfg/LazyBooleans.instructions b/compiler/testData/cfg/LazyBooleans.instructions index 080a7519745..f204026d0a0 100644 --- a/compiler/testData/cfg/LazyBooleans.instructions +++ b/compiler/testData/cfg/LazyBooleans.instructions @@ -18,57 +18,61 @@ fun lazyBooleans(a : Boolean, b : Boolean) : Unit { } --------------------- l0: - NEXT:[r(a)] PREV:[] - r(a) NEXT:[jf(l2)] PREV:[] - jf(l2) NEXT:[r(2), r(1)] PREV:[r(a)] - r(1) NEXT:[jmp(l3)] PREV:[jf(l2)] - jmp(l3) NEXT:[r(3)] PREV:[r(1)] + NEXT:[v(a : Boolean)] PREV:[] + v(a : Boolean) NEXT:[w(a)] PREV:[] + w(a) NEXT:[v(b : Boolean)] PREV:[v(a : Boolean)] + v(b : Boolean) NEXT:[w(b)] PREV:[w(a)] + w(b) NEXT:[r(a)] PREV:[v(b : Boolean)] + r(a) NEXT:[jf(l2)] PREV:[w(b)] + jf(l2) NEXT:[r(2), r(1)] PREV:[r(a)] + r(1) NEXT:[jmp(l3)] PREV:[jf(l2)] + jmp(l3) NEXT:[r(3)] PREV:[r(1)] l2: - r(2) NEXT:[r(3)] PREV:[jf(l2)] + r(2) NEXT:[r(3)] PREV:[jf(l2)] l3: - r(3) NEXT:[r(a)] PREV:[jmp(l3), r(2)] - r(a) NEXT:[jf(l4)] PREV:[r(3)] - jf(l4) NEXT:[jf(l5), r(b)] PREV:[r(a)] - r(b) NEXT:[jf(l5)] PREV:[jf(l4)] + r(3) NEXT:[r(a)] PREV:[jmp(l3), r(2)] + r(a) NEXT:[jf(l4)] PREV:[r(3)] + jf(l4) NEXT:[jf(l5), r(b)] PREV:[r(a)] + r(b) NEXT:[jf(l5)] PREV:[jf(l4)] l4: - jf(l5) NEXT:[r(6), r(5)] PREV:[jf(l4), r(b)] - r(5) NEXT:[jmp(l6)] PREV:[jf(l5)] - jmp(l6) NEXT:[r(7)] PREV:[r(5)] + jf(l5) NEXT:[r(6), r(5)] PREV:[jf(l4), r(b)] + r(5) NEXT:[jmp(l6)] PREV:[jf(l5)] + jmp(l6) NEXT:[r(7)] PREV:[r(5)] l5: - r(6) NEXT:[r(7)] PREV:[jf(l5)] + r(6) NEXT:[r(7)] PREV:[jf(l5)] l6: - r(7) NEXT:[r(a)] PREV:[jmp(l6), r(6)] - r(a) NEXT:[jt(l7)] PREV:[r(7)] - jt(l7) NEXT:[r(b), jf(l8)] PREV:[r(a)] - r(b) NEXT:[jf(l8)] PREV:[jt(l7)] + r(7) NEXT:[r(a)] PREV:[jmp(l6), r(6)] + r(a) NEXT:[jt(l7)] PREV:[r(7)] + jt(l7) NEXT:[r(b), jf(l8)] PREV:[r(a)] + r(b) NEXT:[jf(l8)] PREV:[jt(l7)] l7: - jf(l8) NEXT:[r(9), r(8)] PREV:[jt(l7), r(b)] - r(8) NEXT:[jmp(l9)] PREV:[jf(l8)] - jmp(l9) NEXT:[r(10)] PREV:[r(8)] + jf(l8) NEXT:[r(9), r(8)] PREV:[jt(l7), r(b)] + r(8) NEXT:[jmp(l9)] PREV:[jf(l8)] + jmp(l9) NEXT:[r(10)] PREV:[r(8)] l8: - r(9) NEXT:[r(10)] PREV:[jf(l8)] + r(9) NEXT:[r(10)] PREV:[jf(l8)] l9: - r(10) NEXT:[r(a)] PREV:[jmp(l9), r(9)] - r(a) NEXT:[jf(l10)] PREV:[r(10)] - jf(l10) NEXT:[read (Unit), r(11)] PREV:[r(a)] - r(11) NEXT:[jmp(l11)] PREV:[jf(l10)] - jmp(l11) NEXT:[r(12)] PREV:[r(11)] + r(10) NEXT:[r(a)] PREV:[jmp(l9), r(9)] + r(a) NEXT:[jf(l10)] PREV:[r(10)] + jf(l10) NEXT:[read (Unit), r(11)] PREV:[r(a)] + r(11) NEXT:[jmp(l11)] PREV:[jf(l10)] + jmp(l11) NEXT:[r(12)] PREV:[r(11)] l10: - read (Unit) NEXT:[r(12)] PREV:[jf(l10)] + read (Unit) NEXT:[r(12)] PREV:[jf(l10)] l11: - r(12) NEXT:[r(a)] PREV:[jmp(l11), read (Unit)] - r(a) NEXT:[jf(l12)] PREV:[r(12)] - jf(l12) NEXT:[r(13), read (Unit)] PREV:[r(a)] - read (Unit) NEXT:[jmp(l13)] PREV:[jf(l12)] - jmp(l13) NEXT:[r(14)] PREV:[read (Unit)] + r(12) NEXT:[r(a)] PREV:[jmp(l11), read (Unit)] + r(a) NEXT:[jf(l12)] PREV:[r(12)] + jf(l12) NEXT:[r(13), read (Unit)] PREV:[r(a)] + read (Unit) NEXT:[jmp(l13)] PREV:[jf(l12)] + jmp(l13) NEXT:[r(14)] PREV:[read (Unit)] l12: - r(13) NEXT:[r(14)] PREV:[jf(l12)] + r(13) NEXT:[r(14)] PREV:[jf(l12)] l13: - r(14) NEXT:[] PREV:[jmp(l13), r(13)] + r(14) NEXT:[] PREV:[jmp(l13), r(13)] l1: - NEXT:[] PREV:[r(14)] + NEXT:[] PREV:[r(14)] error: - NEXT:[] PREV:[] + NEXT:[] PREV:[] sink: - NEXT:[] PREV:[] + NEXT:[] PREV:[] ===================== diff --git a/compiler/testData/cfg/LocalDeclarations.instructions b/compiler/testData/cfg/LocalDeclarations.instructions index 94fabadf512..179ed5fe1d7 100644 --- a/compiler/testData/cfg/LocalDeclarations.instructions +++ b/compiler/testData/cfg/LocalDeclarations.instructions @@ -80,8 +80,10 @@ sink: fun doSmth(i: Int) {} --------------------- l0: - NEXT:[read (Unit)] PREV:[] - read (Unit) NEXT:[] PREV:[] + NEXT:[v(i: Int)] PREV:[] + v(i: Int) NEXT:[w(i)] PREV:[] + w(i) NEXT:[read (Unit)] PREV:[v(i: Int)] + read (Unit) NEXT:[] PREV:[w(i)] l1: NEXT:[] PREV:[read (Unit)] error: diff --git a/compiler/testData/checkerWithErrorTypes/quick/Abstract.jet b/compiler/testData/checkerWithErrorTypes/quick/Abstract.jet index a13891668c6..d36e7769f63 100644 --- a/compiler/testData/checkerWithErrorTypes/quick/Abstract.jet +++ b/compiler/testData/checkerWithErrorTypes/quick/Abstract.jet @@ -237,7 +237,7 @@ abstract class B3(i: Int) { this(): this(1) } -fun foo(c: B3) { +fun foo(c: B3) { val a = B3() val b = B1(2, "s") -} +} \ No newline at end of file diff --git a/compiler/testData/checkerWithErrorTypes/quick/AutoCreatedIt.jet b/compiler/testData/checkerWithErrorTypes/quick/AutoCreatedIt.jet index ef474b07d54..b9aa7b90c6b 100644 --- a/compiler/testData/checkerWithErrorTypes/quick/AutoCreatedIt.jet +++ b/compiler/testData/checkerWithErrorTypes/quick/AutoCreatedIt.jet @@ -15,18 +15,18 @@ fun text() { bar2 {it => it} } -fun bar(f : fun (Int, Int) : Int) {} -fun bar1(f : fun (Int) : Int) {} -fun bar2(f : fun () : Int) {} +fun bar(f : fun (Int, Int) : Int) {} +fun bar1(f : fun (Int) : Int) {} +fun bar2(f : fun () : Int) {} -fun String.to(dest : String) { +fun String.to(dest : String) { } -fun String.on(predicate : fun (s : URI) : Boolean) : URI { +fun String.on(predicate : fun (s : URI) : Boolean) : URI { return URI(this) } class URI(val body : Any) { - fun to(dest : String) {} + fun to(dest : String) {} } \ No newline at end of file diff --git a/compiler/testData/checkerWithErrorTypes/quick/AutocastsForStableIdentifiers.jet b/compiler/testData/checkerWithErrorTypes/quick/AutocastsForStableIdentifiers.jet index c46164e8c73..f6ccdfc8a0a 100644 --- a/compiler/testData/checkerWithErrorTypes/quick/AutocastsForStableIdentifiers.jet +++ b/compiler/testData/checkerWithErrorTypes/quick/AutocastsForStableIdentifiers.jet @@ -16,7 +16,7 @@ class AClass() { val x : Any? = 1 -fun Any?.vars(a: Any?) : Int { +fun Any?.vars(a: Any?) : Int { var b: Int = 0 if (ns.y is Int) { b = ns.y @@ -88,4 +88,4 @@ open class C { t = this@C } } -} +} \ No newline at end of file diff --git a/compiler/testData/checkerWithErrorTypes/quick/Basic.jet b/compiler/testData/checkerWithErrorTypes/quick/Basic.jet index 82775571c83..4dc3161b26a 100644 --- a/compiler/testData/checkerWithErrorTypes/quick/Basic.jet +++ b/compiler/testData/checkerWithErrorTypes/quick/Basic.jet @@ -1,4 +1,4 @@ -fun foo(u : Unit) : Int = 1 +fun foo(u : Unit) : Int = 1 fun test() : Int { foo(1) diff --git a/compiler/testData/checkerWithErrorTypes/quick/BinaryCallsOnNullableValues.jet b/compiler/testData/checkerWithErrorTypes/quick/BinaryCallsOnNullableValues.jet index 5394c137aae..f32efe534f1 100644 --- a/compiler/testData/checkerWithErrorTypes/quick/BinaryCallsOnNullableValues.jet +++ b/compiler/testData/checkerWithErrorTypes/quick/BinaryCallsOnNullableValues.jet @@ -1,13 +1,13 @@ class A() { - fun equals(a : Any?) : Boolean = false + fun equals(a : Any?) : Boolean = false } class B() { - fun equals(a : Any?) : Boolean? = false + fun equals(a : Any?) : Boolean? = false } class C() { - fun equals(a : Any?) : Int = 0 + fun equals(a : Any?) : Int = 0 } fun f(): Unit { diff --git a/compiler/testData/checkerWithErrorTypes/quick/BreakContinue.jet b/compiler/testData/checkerWithErrorTypes/quick/BreakContinue.jet index 1cecda9dae9..4502e880282 100644 --- a/compiler/testData/checkerWithErrorTypes/quick/BreakContinue.jet +++ b/compiler/testData/checkerWithErrorTypes/quick/BreakContinue.jet @@ -1,6 +1,6 @@ class C { - fun f (a : Boolean, b : Boolean) { + fun f (a : Boolean, b : Boolean) { @b (while (true) @a { break@f @@ -25,7 +25,7 @@ class C { break@f } - fun containsBreak(a: String?, b: String?) { + fun containsBreak(a: String?, b: String?) { while (a == null) { break; } diff --git a/compiler/testData/checkerWithErrorTypes/quick/ConflictingOverloads.jet b/compiler/testData/checkerWithErrorTypes/quick/ConflictingOverloads.jet index b1055124354..6f13050d3ae 100644 --- a/compiler/testData/checkerWithErrorTypes/quick/ConflictingOverloads.jet +++ b/compiler/testData/checkerWithErrorTypes/quick/ConflictingOverloads.jet @@ -1,9 +1,9 @@ // http://youtrack.jetbrains.net/issue/KT-424 class A { - fun a(a: Int): Int = 0 + fun a(a: Int): Int = 0 - fun a(a: Int) { + fun a(a: Int) { } fun b() { @@ -14,17 +14,17 @@ class A { } namespace deepSpace { - fun c(s: String) { + fun c(s: String) { } - fun c(s: String) { + fun c(s: String) { } class B { - fun d(s: String) { + fun d(s: String) { } - fun d(s: String) { + fun d(s: String) { } } } @@ -49,9 +49,9 @@ namespace ns3 { // check same rules apply for ext functions namespace extensionFunctions { - fun Int.qwe(a: Float) = 1 + fun Int.qwe(a: Float) = 1 - fun Int.qwe(a: Float) = 2 + fun Int.qwe(a: Float) = 2 fun Int.rty() = 3 @@ -94,5 +94,4 @@ namespace constructorVsFun { class ololo() { } } } -} - +} \ No newline at end of file diff --git a/compiler/testData/checkerWithErrorTypes/quick/DefaultValuesTypechecking.jet b/compiler/testData/checkerWithErrorTypes/quick/DefaultValuesTypechecking.jet index 55df425bc64..67d360888da 100644 --- a/compiler/testData/checkerWithErrorTypes/quick/DefaultValuesTypechecking.jet +++ b/compiler/testData/checkerWithErrorTypes/quick/DefaultValuesTypechecking.jet @@ -1,5 +1,5 @@ val x = "" -fun bar(x : Int = "", y : Int = x, z : String = y) { +fun bar(x : Int = "", y : Int = x, z : String = y) { -} +} \ No newline at end of file diff --git a/compiler/testData/checkerWithErrorTypes/quick/ExtensionFunctions.jet b/compiler/testData/checkerWithErrorTypes/quick/ExtensionFunctions.jet index 245be61e735..e7e3c1cebf4 100644 --- a/compiler/testData/checkerWithErrorTypes/quick/ExtensionFunctions.jet +++ b/compiler/testData/checkerWithErrorTypes/quick/ExtensionFunctions.jet @@ -3,7 +3,7 @@ fun Int?.optint() : Unit {} val Int?.optval : Unit = () -fun T.foo(x : E, y : A) : T { +fun T.foo(x : E, y : A) : T { y.plus(1) y plus 1 y + 1.0 @@ -15,7 +15,7 @@ fun T.foo(x : E, y : A) : T { class A -fun A.plus(a : Any) { +fun A.plus(a : Any) { 1.foo() true.foo() @@ -23,11 +23,11 @@ fun A.plus(a : Any) { 1 } -fun A.plus(a : Int) { +fun A.plus(a : Int) { 1 } -fun T.minus(t : T) : Int = 1 +fun T.minus(t : T) : Int = 1 fun test() { val y = 1.abs @@ -41,15 +41,15 @@ fun Int.foo() = this namespace null_safety { - fun parse(cmd: String): Command? { return null } + fun parse(cmd: String): Command? { return null } class Command() { // fun equals(other : Any?) : Boolean val foo : Int = 0 } - fun Any.equals(other : Any?) : Boolean = true - fun Any?.equals1(other : Any?) : Boolean = true - fun Any.equals2(other : Any?) : Boolean = true + fun Any.equals(other : Any?) : Boolean = true + fun Any?.equals1(other : Any?) : Boolean = true + fun Any.equals2(other : Any?) : Boolean = true fun main(args: Array) { @@ -70,4 +70,4 @@ namespace null_safety { if (command == null) 1 } -} +} \ No newline at end of file diff --git a/compiler/testData/checkerWithErrorTypes/quick/FunctionCalleeExpressions.jet b/compiler/testData/checkerWithErrorTypes/quick/FunctionCalleeExpressions.jet index 15acd8ec22c..5e6ef793f1d 100644 --- a/compiler/testData/checkerWithErrorTypes/quick/FunctionCalleeExpressions.jet +++ b/compiler/testData/checkerWithErrorTypes/quick/FunctionCalleeExpressions.jet @@ -51,7 +51,7 @@ fun main(args : Array) { fun f() : fun Int.() : Unit = {} -fun main1(args : Array) { +fun main1() { 1.{Int.() => 1}(); {1}() {(x : Int) => x}(1) diff --git a/compiler/testData/checkerWithErrorTypes/quick/GenericFunctionIsLessSpecific.jet b/compiler/testData/checkerWithErrorTypes/quick/GenericFunctionIsLessSpecific.jet index 308a3cd08c0..868937e8397 100644 --- a/compiler/testData/checkerWithErrorTypes/quick/GenericFunctionIsLessSpecific.jet +++ b/compiler/testData/checkerWithErrorTypes/quick/GenericFunctionIsLessSpecific.jet @@ -1,6 +1,6 @@ // A generic funciton is always less specific than a non-generic one -fun foo(t : T) : Unit {} -fun foo(i : Int) : Int = 1 +fun foo(t : T) : Unit {} +fun foo(i : Int) : Int = 1 fun test() { foo(1) : Int diff --git a/compiler/testData/checkerWithErrorTypes/quick/InferNullabilityInThenBlock.jet b/compiler/testData/checkerWithErrorTypes/quick/InferNullabilityInThenBlock.jet index 4925867c8c6..17a21679c79 100644 --- a/compiler/testData/checkerWithErrorTypes/quick/InferNullabilityInThenBlock.jet +++ b/compiler/testData/checkerWithErrorTypes/quick/InferNullabilityInThenBlock.jet @@ -1,5 +1,4 @@ - -fun ff(a: String) = 1 +fun ff(a: String) = 1 fun gg() { val a: String? = "" @@ -7,5 +6,4 @@ fun gg() { if (a != null) { ff(a) } -} - +} \ No newline at end of file diff --git a/compiler/testData/checkerWithErrorTypes/quick/LValueAssignment.jet b/compiler/testData/checkerWithErrorTypes/quick/LValueAssignment.jet index fd3796e1ffd..e9551afa2fd 100644 --- a/compiler/testData/checkerWithErrorTypes/quick/LValueAssignment.jet +++ b/compiler/testData/checkerWithErrorTypes/quick/LValueAssignment.jet @@ -7,7 +7,7 @@ open class B() { class C() : B() { var x = 4 - fun foo(c: C) { + fun foo(c: C) { this.x = 34 this.b = 123 super.b = 23 @@ -17,7 +17,7 @@ class C() : B() { getInt() = 12 } - fun foo1(c: C) { + fun foo1(c: C) { super.c = 34 } @@ -36,7 +36,7 @@ class D() { } } -fun cannotBe(var i: Int) { +fun cannotBe(var i: Int) { z = 30; () = (); @@ -47,18 +47,18 @@ fun cannotBe(var i: Int) { } fun canBe(var i: Int, val j: Int) { - (i: Int) = 36 - (@label i) = 34 + (i: Int) = 36 + (@label i) = 34 - (j: Int) = 36 - (@label j) = 34 //repeat for j + (j: Int) = 36 + (@label j) = 34 //repeat for j val a = A() (@ a.a) = 3894 } fun canBe2(val j: Int) { - (@label j) = 34 + (@label j) = 34 } class A() { @@ -140,4 +140,4 @@ fun Array.checkThis() { abstract class Ab { abstract fun getArray() : Array -} +} \ No newline at end of file diff --git a/compiler/testData/checkerWithErrorTypes/quick/NamedArgumentsAndDefaultValues.jet b/compiler/testData/checkerWithErrorTypes/quick/NamedArgumentsAndDefaultValues.jet index f1d42c6b60d..8f9476575d4 100644 --- a/compiler/testData/checkerWithErrorTypes/quick/NamedArgumentsAndDefaultValues.jet +++ b/compiler/testData/checkerWithErrorTypes/quick/NamedArgumentsAndDefaultValues.jet @@ -1,7 +1,7 @@ -fun foo(a : Int = 1, b : String = "abc") { +fun foo(a : Int = 1, b : String = "abc") { } -fun bar(x : Int = 1, y : Int = 1, z : String) { +fun bar(x : Int = 1, y : Int = 1, z : String) { } fun test() { diff --git a/compiler/testData/checkerWithErrorTypes/quick/ResolveOfJavaGenerics.jet b/compiler/testData/checkerWithErrorTypes/quick/ResolveOfJavaGenerics.jet index 2353e215293..ae44ace8caf 100644 --- a/compiler/testData/checkerWithErrorTypes/quick/ResolveOfJavaGenerics.jet +++ b/compiler/testData/checkerWithErrorTypes/quick/ResolveOfJavaGenerics.jet @@ -1,7 +1,7 @@ // +JDK // Fixpoint generic in Java: Enum> -fun test(a : annotation.RetentionPolicy) { +fun test(a : annotation.RetentionPolicy) { } @@ -9,14 +9,14 @@ fun test() { java.util.Collections.emptyList() } -fun test(a : java.lang.Comparable) { +fun test(a : java.lang.Comparable) { } -fun test(a : java.util.ArrayList) { +fun test(a : java.util.ArrayList) { } -fun test(a : java.lang.Class) { +fun test(a : java.lang.Class) { -} +} \ No newline at end of file diff --git a/compiler/testData/checkerWithErrorTypes/quick/ResolveToJava.jet b/compiler/testData/checkerWithErrorTypes/quick/ResolveToJava.jet index d404b2365ba..ff4d34b1cf7 100644 --- a/compiler/testData/checkerWithErrorTypes/quick/ResolveToJava.jet +++ b/compiler/testData/checkerWithErrorTypes/quick/ResolveToJava.jet @@ -9,7 +9,7 @@ import java.lang.Comparable as Com val l : List = ArrayList() -fun test(l : java.util.List) { +fun test(l : java.util.List) { val x : java.List val y : java.util.List val b : java.lang.Object @@ -51,4 +51,4 @@ fun test(l : java.util.List) { namespace xxx { import java.lang.Class; -} +} \ No newline at end of file diff --git a/compiler/testData/checkerWithErrorTypes/quick/Super.jet b/compiler/testData/checkerWithErrorTypes/quick/Super.jet index 7a3095d820f..ca3fff3dc9e 100644 --- a/compiler/testData/checkerWithErrorTypes/quick/Super.jet +++ b/compiler/testData/checkerWithErrorTypes/quick/Super.jet @@ -1,6 +1,6 @@ namespace example; -fun any(a : Any) {} +fun any(a : Any) {} fun notAnExpression() { any(super) // not an expression diff --git a/compiler/testData/checkerWithErrorTypes/quick/TypeInference.jet b/compiler/testData/checkerWithErrorTypes/quick/TypeInference.jet index 5f35e4d98a5..4dd8649fff0 100644 --- a/compiler/testData/checkerWithErrorTypes/quick/TypeInference.jet +++ b/compiler/testData/checkerWithErrorTypes/quick/TypeInference.jet @@ -2,7 +2,7 @@ class C() { fun foo() : T {} } -fun foo(c: C) {} +fun foo(c: C) {} fun bar() : C {} fun main(args : Array) { diff --git a/compiler/testData/checkerWithErrorTypes/quick/UninitializedOrReassignedVariables.jet b/compiler/testData/checkerWithErrorTypes/quick/UninitializedOrReassignedVariables.jet index f1bbe6de43b..593d34b02c4 100644 --- a/compiler/testData/checkerWithErrorTypes/quick/UninitializedOrReassignedVariables.jet +++ b/compiler/testData/checkerWithErrorTypes/quick/UninitializedOrReassignedVariables.jet @@ -1,7 +1,7 @@ namespace uninitialized_reassigned_variables -fun doSmth(s: String) {} -fun doSmth(i: Int) {} +fun doSmth(s: String) {} +fun doSmth(i: Int) {} // ------------------------------------------------ // uninitialized variables @@ -54,9 +54,9 @@ fun t2() { class A() {} fun t4(a: A, val b: A, var c: A) { - a = A() - b = A() - c = A() + a = A() + b = A() + c = A() } // ------------------------------------------------ @@ -191,7 +191,7 @@ class AnonymousInitializers(var a: String, val b: String) { } fun reassignFunParams(val a: Int) { - a = 1 + a = 1 } open class Open(a: Int, w: Int) {} diff --git a/compiler/testData/checkerWithErrorTypes/quick/UnreachableCode.jet b/compiler/testData/checkerWithErrorTypes/quick/UnreachableCode.jet index 36bfd0e8925..088bba18e54 100644 --- a/compiler/testData/checkerWithErrorTypes/quick/UnreachableCode.jet +++ b/compiler/testData/checkerWithErrorTypes/quick/UnreachableCode.jet @@ -47,7 +47,7 @@ fun t3() : Any { 1 } -fun t4(a : Boolean) : Int { +fun t4(a : Boolean) : Int { do { return 1 } @@ -55,7 +55,7 @@ fun t4(a : Boolean) : Int { 1 } -fun t4break(a : Boolean) : Int { +fun t4break(a : Boolean) : Int { do { break } @@ -162,7 +162,7 @@ fun nullIsNotNothing() : Unit { fail() } -fun returnInWhile(a: Int) { +fun returnInWhile(a: Int) { do {return} while (1 > a) -} +} \ No newline at end of file diff --git a/compiler/testData/checkerWithErrorTypes/quick/Unresolved.jet b/compiler/testData/checkerWithErrorTypes/quick/Unresolved.jet index a13dae7809b..b5b6018377d 100644 --- a/compiler/testData/checkerWithErrorTypes/quick/Unresolved.jet +++ b/compiler/testData/checkerWithErrorTypes/quick/Unresolved.jet @@ -28,4 +28,4 @@ fun testUnresolved() { } } -fun foo1(i: Int) {} \ No newline at end of file +fun foo1(i: Int) {} \ No newline at end of file diff --git a/compiler/testData/checkerWithErrorTypes/quick/UnusedVariables.jet b/compiler/testData/checkerWithErrorTypes/quick/UnusedVariables.jet index dd23f8a97d6..060ad3f83a4 100644 --- a/compiler/testData/checkerWithErrorTypes/quick/UnusedVariables.jet +++ b/compiler/testData/checkerWithErrorTypes/quick/UnusedVariables.jet @@ -86,8 +86,8 @@ class MyTest() { } } - fun doSmth(s: String) {} - fun doSmth(a: Any) {} + fun doSmth(s: String) {} + fun doSmth(a: Any) {} } fun testInnerFunctions() { @@ -139,4 +139,4 @@ fun testBackingFieldsNotMarked() { } } -fun doSmth(i : Int) {} +fun doSmth(i : Int) {} \ No newline at end of file diff --git a/compiler/testData/checkerWithErrorTypes/quick/Varargs.jet b/compiler/testData/checkerWithErrorTypes/quick/Varargs.jet index 7904791df5a..5986ce0982d 100644 --- a/compiler/testData/checkerWithErrorTypes/quick/Varargs.jet +++ b/compiler/testData/checkerWithErrorTypes/quick/Varargs.jet @@ -1,5 +1,5 @@ -fun v(x : Int, y : String, vararg f : Long) {} -fun v1(vararg f : fun (Int) : Unit) {} +fun v(x : Int, y : String, vararg f : Long) {} +fun v1(vararg f : fun (Int) : Unit) {} fun test() { v(1, "") @@ -14,4 +14,4 @@ fun test() { v1({}, {}, {it}) v1({}) {} v1 {} -} +} \ No newline at end of file diff --git a/compiler/testData/checkerWithErrorTypes/quick/Variance.jet b/compiler/testData/checkerWithErrorTypes/quick/Variance.jet index 1306c251f00..8785dfd87cb 100644 --- a/compiler/testData/checkerWithErrorTypes/quick/Variance.jet +++ b/compiler/testData/checkerWithErrorTypes/quick/Variance.jet @@ -19,17 +19,17 @@ fun foo(c: Consumer, p: Producer, u: Usual) { //Arrays copy example class Array(val length : Int, val t : T) { - fun get(index : Int) : T { return t } - fun set(index : Int, value : T) { /* ... */ } + fun get(index : Int) : T { return t } + fun set(index : Int, value : T) { /* ... */ } } -fun copy1(from : Array, to : Array) {} +fun copy1(from : Array, to : Array) {} -fun copy2(from : Array, to : Array) {} +fun copy2(from : Array, to : Array) {} -fun copy3(from : Array, to : Array) {} +fun copy3(from : Array, to : Array) {} -fun copy4(from : Array, to : Array) {} +fun copy4(from : Array, to : Array) {} fun f(ints: Array, any: Array, numbers: Array) { copy1(ints, any) diff --git a/compiler/testData/checkerWithErrorTypes/quick/nullabilityAndAutoCasts/InfixCallNullability.jet b/compiler/testData/checkerWithErrorTypes/quick/nullabilityAndAutoCasts/InfixCallNullability.jet index d27f6834a73..e1eb592bc2e 100644 --- a/compiler/testData/checkerWithErrorTypes/quick/nullabilityAndAutoCasts/InfixCallNullability.jet +++ b/compiler/testData/checkerWithErrorTypes/quick/nullabilityAndAutoCasts/InfixCallNullability.jet @@ -1,11 +1,11 @@ class A() { - fun plus(i : Int) {} + fun plus(i : Int) {} fun minus() {} - fun contains(a : Any?) : Boolean = true + fun contains(a : Any?) : Boolean = true } -fun A.div(i : Int) {} -fun A?.times(i : Int) {} +fun A.div(i : Int) {} +fun A?.times(i : Int) {} fun test(x : Int?, a : A?) { x.plus(1) @@ -38,4 +38,4 @@ fun test(x : Int?, a : A?) { a contains 1 a.contains(1) a?.contains(1) -} +} \ No newline at end of file diff --git a/compiler/testData/checkerWithErrorTypes/quick/regressions/AmbiguityOnLazyTypeComputation.jet b/compiler/testData/checkerWithErrorTypes/quick/regressions/AmbiguityOnLazyTypeComputation.jet index 779ee4c4d97..cdced141c6a 100644 --- a/compiler/testData/checkerWithErrorTypes/quick/regressions/AmbiguityOnLazyTypeComputation.jet +++ b/compiler/testData/checkerWithErrorTypes/quick/regressions/AmbiguityOnLazyTypeComputation.jet @@ -7,6 +7,6 @@ val b : Foo = Foo() val a1 = b.compareTo(2) class Foo() { - fun compareTo(other : Byte) : Int = 0 - fun compareTo(other : Char) : Int = 0 -} + fun compareTo(other : Byte) : Int = 0 + fun compareTo(other : Char) : Int = 0 +} \ No newline at end of file diff --git a/compiler/testData/checkerWithErrorTypes/quick/regressions/CoercionToUnit.jet b/compiler/testData/checkerWithErrorTypes/quick/regressions/CoercionToUnit.jet index 6ce84f8c66b..765036145b7 100644 --- a/compiler/testData/checkerWithErrorTypes/quick/regressions/CoercionToUnit.jet +++ b/compiler/testData/checkerWithErrorTypes/quick/regressions/CoercionToUnit.jet @@ -1,4 +1,4 @@ -fun foo(u : Unit) : Int = 1 +fun foo(u : Unit) : Int = 1 fun test() : Int { foo(1) diff --git a/compiler/testData/checkerWithErrorTypes/quick/regressions/ErrorsOnIbjectExpressionsAsParameters.jet b/compiler/testData/checkerWithErrorTypes/quick/regressions/ErrorsOnIbjectExpressionsAsParameters.jet index 75432316689..e5c2de37d80 100644 --- a/compiler/testData/checkerWithErrorTypes/quick/regressions/ErrorsOnIbjectExpressionsAsParameters.jet +++ b/compiler/testData/checkerWithErrorTypes/quick/regressions/ErrorsOnIbjectExpressionsAsParameters.jet @@ -1,4 +1,4 @@ -fun foo(a : Any) {} +fun foo(a : Any) {} fun test() { foo(object {}); diff --git a/compiler/testData/checkerWithErrorTypes/quick/regressions/Jet124.jet b/compiler/testData/checkerWithErrorTypes/quick/regressions/Jet124.jet index 58e876a80f2..317b1438f41 100644 --- a/compiler/testData/checkerWithErrorTypes/quick/regressions/Jet124.jet +++ b/compiler/testData/checkerWithErrorTypes/quick/regressions/Jet124.jet @@ -1,8 +1,8 @@ fun foo1() : fun (Int) : Int = { (x: Int) => x } fun foo() { - val h : fun (Int) : Int = foo1(); + val h : fun (Int) : Int = foo1(); h(1) - val m : fun (Int) : Int = {(a : Int) => 1}//foo1() + val m : fun (Int) : Int = {(a : Int) => 1}//foo1() m(1) } \ No newline at end of file diff --git a/compiler/testData/checkerWithErrorTypes/quick/regressions/Jet169.jet b/compiler/testData/checkerWithErrorTypes/quick/regressions/Jet169.jet index 000536ce340..c0196a2543d 100644 --- a/compiler/testData/checkerWithErrorTypes/quick/regressions/Jet169.jet +++ b/compiler/testData/checkerWithErrorTypes/quick/regressions/Jet169.jet @@ -1,8 +1,8 @@ -fun set(key : String, value : String) { +fun set(key : String, value : String) { val a : String? = "" when (a) { "" => a.get(0) is String, is Any => a.compareTo("") else => a.toString() } -} +} \ No newline at end of file diff --git a/compiler/testData/checkerWithErrorTypes/quick/regressions/Jet69.jet b/compiler/testData/checkerWithErrorTypes/quick/regressions/Jet69.jet index dd198aa0f61..9e8c5fa83dd 100644 --- a/compiler/testData/checkerWithErrorTypes/quick/regressions/Jet69.jet +++ b/compiler/testData/checkerWithErrorTypes/quick/regressions/Jet69.jet @@ -1,10 +1,10 @@ class Command() {} -fun parse(cmd: String): Command? { return null } +fun parse(cmd: String): Command? { return null } fun Any.equals(other : Any?) : Boolean = this === other fun main(args: Array) { val command = parse("") if (command == null) 1 // error on this line, but must be OK -} +} \ No newline at end of file diff --git a/compiler/testData/checkerWithErrorTypes/quick/regressions/OutProjections.jet b/compiler/testData/checkerWithErrorTypes/quick/regressions/OutProjections.jet index f6c32d8f776..224e6decd93 100644 --- a/compiler/testData/checkerWithErrorTypes/quick/regressions/OutProjections.jet +++ b/compiler/testData/checkerWithErrorTypes/quick/regressions/OutProjections.jet @@ -3,7 +3,7 @@ class Point() { class G() {} -fun f(expression : T) : G = G +fun f(expression : T) : G = G fun foo() : G { @@ -13,7 +13,7 @@ fun foo() : G { class Out() {} -fun fout(expression : T) : Out = Out +fun fout(expression : T) : Out = Out fun fooout() : Out { val p = Point(); diff --git a/compiler/testData/checkerWithErrorTypes/quick/regressions/ScopeForSecondaryConstructors.jet b/compiler/testData/checkerWithErrorTypes/quick/regressions/ScopeForSecondaryConstructors.jet index 31212378979..ae4bc37dabe 100644 --- a/compiler/testData/checkerWithErrorTypes/quick/regressions/ScopeForSecondaryConstructors.jet +++ b/compiler/testData/checkerWithErrorTypes/quick/regressions/ScopeForSecondaryConstructors.jet @@ -8,7 +8,7 @@ class Foo(var bar : Int, var barr : Int, var barrr : Int) { } this(var bar : Int) : this(1, 1, 1) { - bar = 1 + bar = 1 this.bar 1 : Int val a : Int =1 diff --git a/compiler/testData/checkerWithErrorTypes/quick/regressions/SpecififcityByReceiver.jet b/compiler/testData/checkerWithErrorTypes/quick/regressions/SpecififcityByReceiver.jet index bbca53527c8..e0ea1063e56 100644 --- a/compiler/testData/checkerWithErrorTypes/quick/regressions/SpecififcityByReceiver.jet +++ b/compiler/testData/checkerWithErrorTypes/quick/regressions/SpecififcityByReceiver.jet @@ -1,4 +1,4 @@ -fun Any.equals(other : Any?) : Boolean = true +fun Any.equals(other : Any?) : Boolean = true fun main(args: Array) { diff --git a/compiler/testData/checkerWithErrorTypes/quick/regressions/WrongTraceInCallResolver.jet b/compiler/testData/checkerWithErrorTypes/quick/regressions/WrongTraceInCallResolver.jet index 952ac6c3dbe..c81f9324b71 100644 --- a/compiler/testData/checkerWithErrorTypes/quick/regressions/WrongTraceInCallResolver.jet +++ b/compiler/testData/checkerWithErrorTypes/quick/regressions/WrongTraceInCallResolver.jet @@ -1,8 +1,8 @@ open class Foo {} open class Bar {} -fun foo(x : Int) {} -fun foo(x : Long) {} +fun foo(x : Int) {} +fun foo(x : Long) {} fun f(): Unit { foo<Int, Int>(1) diff --git a/compiler/testData/checkerWithErrorTypes/quick/regressions/kt510.jet b/compiler/testData/checkerWithErrorTypes/quick/regressions/control-flow-analysis/kt510.jet similarity index 100% rename from compiler/testData/checkerWithErrorTypes/quick/regressions/kt510.jet rename to compiler/testData/checkerWithErrorTypes/quick/regressions/control-flow-analysis/kt510.jet diff --git a/compiler/testData/checkerWithErrorTypes/quick/regressions/kt607.jet b/compiler/testData/checkerWithErrorTypes/quick/regressions/control-flow-analysis/kt607.jet similarity index 100% rename from compiler/testData/checkerWithErrorTypes/quick/regressions/kt607.jet rename to compiler/testData/checkerWithErrorTypes/quick/regressions/control-flow-analysis/kt607.jet diff --git a/compiler/testData/checkerWithErrorTypes/quick/regressions/control-flow-analysis/kt609.jet b/compiler/testData/checkerWithErrorTypes/quick/regressions/control-flow-analysis/kt609.jet new file mode 100644 index 00000000000..56f75e247e2 --- /dev/null +++ b/compiler/testData/checkerWithErrorTypes/quick/regressions/control-flow-analysis/kt609.jet @@ -0,0 +1,19 @@ +//KT-609 Analyze not only local variables, but function parameters as well in 'unused values' analysis + +namespace kt609 + +fun test(var a: Int) { + a = 324 //should be an 'unused value' warning here +} + +class C() { + fun foo(s: String) {} //should be an 'unused variable' warning +} + +open class A() { + open fun foo(s : String) {} //should not be a warning +} + +class B() : A() { + final override fun foo(s : String) {} //should not be a warning +} \ No newline at end of file diff --git a/compiler/testData/checkerWithErrorTypes/quick/regressions/kt610.jet b/compiler/testData/checkerWithErrorTypes/quick/regressions/control-flow-analysis/kt610.jet similarity index 100% rename from compiler/testData/checkerWithErrorTypes/quick/regressions/kt610.jet rename to compiler/testData/checkerWithErrorTypes/quick/regressions/control-flow-analysis/kt610.jet diff --git a/compiler/testData/checkerWithErrorTypes/quick/regressions/kt127.jet b/compiler/testData/checkerWithErrorTypes/quick/regressions/kt127.jet index 19ad92b2d52..edb6f1b6d7f 100644 --- a/compiler/testData/checkerWithErrorTypes/quick/regressions/kt127.jet +++ b/compiler/testData/checkerWithErrorTypes/quick/regressions/kt127.jet @@ -2,8 +2,8 @@ class Foo() {} -fun Any.equals(other : Any?) : Boolean = true -fun Any?.equals1(other : Any?) : Boolean = true +fun Any.equals(other : Any?) : Boolean = true +fun Any?.equals1(other : Any?) : Boolean = true fun main(args: Array) { @@ -15,4 +15,4 @@ fun main(args: Array) { // ?.equals(null) => 1 // same here // } command.equals(null) -} +} \ No newline at end of file diff --git a/compiler/testData/checkerWithErrorTypes/quick/regressions/kt128.jet b/compiler/testData/checkerWithErrorTypes/quick/regressions/kt128.jet index efc005cf183..ca9b223cd02 100644 --- a/compiler/testData/checkerWithErrorTypes/quick/regressions/kt128.jet +++ b/compiler/testData/checkerWithErrorTypes/quick/regressions/kt128.jet @@ -1,6 +1,6 @@ // KT-128 Support passing only the last closure if all the other parameters have default values -fun div(c : String = "", f : fun()) {} +fun div(c : String = "", f : fun()) {} fun f() { div { // Nothing passed, but could have been... // ... diff --git a/compiler/testData/checkerWithErrorTypes/quick/regressions/kt235.jet b/compiler/testData/checkerWithErrorTypes/quick/regressions/kt235.jet index c5a96d7c961..0f0c33183a5 100644 --- a/compiler/testData/checkerWithErrorTypes/quick/regressions/kt235.jet +++ b/compiler/testData/checkerWithErrorTypes/quick/regressions/kt235.jet @@ -36,15 +36,15 @@ fun main(args: Array) { } class MyArray() { - fun get(i: Int): Int = 1 - fun set(i: Int, value: Int): Int = 1 + fun get(i: Int): Int = 1 + fun set(i: Int, value: Int): Int = 1 } class MyArray1() { - fun get(i: Int): Int = 1 - fun set(i: Int, value: Int) {} + fun get(i: Int): Int = 1 + fun set(i: Int, value: Int) {} } class MyNumber() { fun inc(): MyNumber = MyNumber() -} +} \ No newline at end of file diff --git a/compiler/testData/checkerWithErrorTypes/quick/regressions/kt258.jet b/compiler/testData/checkerWithErrorTypes/quick/regressions/kt258.jet index 00b7e9696d4..eb77de9e665 100644 --- a/compiler/testData/checkerWithErrorTypes/quick/regressions/kt258.jet +++ b/compiler/testData/checkerWithErrorTypes/quick/regressions/kt258.jet @@ -8,4 +8,4 @@ fun test() { attributes["href"] = "1" // inference fails, but it shouldn't } -fun java.util.Map.set(key : K, value : V) {}//= this.put(key, value) +fun java.util.Map.set(key : K, value : V) {}//= this.put(key, value) \ No newline at end of file diff --git a/compiler/testData/checkerWithErrorTypes/quick/regressions/kt282.jet b/compiler/testData/checkerWithErrorTypes/quick/regressions/kt282.jet index bd6d55ce380..b9c3a16196d 100644 --- a/compiler/testData/checkerWithErrorTypes/quick/regressions/kt282.jet +++ b/compiler/testData/checkerWithErrorTypes/quick/regressions/kt282.jet @@ -1,12 +1,12 @@ // KT-282 Nullability in extension functions and in binary calls class Set { - fun contains(x : Int) : Boolean = true + fun contains(x : Int) : Boolean = true } -fun Set?.plus(x : Int) : Int = 1 +fun Set?.plus(x : Int) : Int = 1 -fun Int?.contains(x : Int) : Boolean = false +fun Int?.contains(x : Int) : Boolean = false fun f(): Unit { var set : Set? = null diff --git a/compiler/testData/checkerWithErrorTypes/quick/regressions/kt287.jet b/compiler/testData/checkerWithErrorTypes/quick/regressions/kt287.jet index 69d2d526fb0..15cf0100499 100644 --- a/compiler/testData/checkerWithErrorTypes/quick/regressions/kt287.jet +++ b/compiler/testData/checkerWithErrorTypes/quick/regressions/kt287.jet @@ -6,8 +6,8 @@ import java.util.* fun attributes() : Map = HashMap() // Should be inferred; val attributes : Map = HashMap() // Should be inferred; -fun foo(m : Map) {} +fun foo(m : Map) {} fun test() { foo(HashMap()) -} +} \ No newline at end of file diff --git a/compiler/testData/checkerWithErrorTypes/quick/regressions/kt335.336.jet b/compiler/testData/checkerWithErrorTypes/quick/regressions/kt335.336.jet index e874d8f005d..a9007627a23 100644 --- a/compiler/testData/checkerWithErrorTypes/quick/regressions/kt335.336.jet +++ b/compiler/testData/checkerWithErrorTypes/quick/regressions/kt335.336.jet @@ -9,7 +9,7 @@ fun > List.sort() { Collections.sort(this) // Error here } -fun List.plus(other : List) : List { +fun List.plus(other : List) : List { val result = ArrayList(this) return result -} +} \ No newline at end of file diff --git a/compiler/testData/checkerWithErrorTypes/quick/regressions/kt352.jet b/compiler/testData/checkerWithErrorTypes/quick/regressions/kt352.jet index e9b4eb34e94..74f9ddecdb0 100644 --- a/compiler/testData/checkerWithErrorTypes/quick/regressions/kt352.jet +++ b/compiler/testData/checkerWithErrorTypes/quick/regressions/kt352.jet @@ -18,7 +18,7 @@ val g : fun() : Unit = { (): Int => 42 } val h : fun() : Unit = { doSmth() } fun doSmth(): Int = 42 -fun doSmth(a: String) {} +fun doSmth(a: String) {} val testIt : fun(Any) : Unit = { if (it is String) { diff --git a/compiler/testData/checkerWithErrorTypes/quick/regressions/kt399.jet b/compiler/testData/checkerWithErrorTypes/quick/regressions/kt399.jet index 9fd7e71c393..3c52df4cc6e 100644 --- a/compiler/testData/checkerWithErrorTypes/quick/regressions/kt399.jet +++ b/compiler/testData/checkerWithErrorTypes/quick/regressions/kt399.jet @@ -1,6 +1,6 @@ // KT-399 Type argument inference not implemented for CALL_EXPRESSION -fun getSameTypeChecker(obj: T) : Function1 { +fun getSameTypeChecker(obj: T) : Function1 { return { (a : Any) => a is T } } diff --git a/compiler/testData/checkerWithErrorTypes/quick/regressions/kt411.jet b/compiler/testData/checkerWithErrorTypes/quick/regressions/kt411.jet index 5d724d405da..0828b9a4efd 100644 --- a/compiler/testData/checkerWithErrorTypes/quick/regressions/kt411.jet +++ b/compiler/testData/checkerWithErrorTypes/quick/regressions/kt411.jet @@ -9,7 +9,7 @@ fun f() { } ) } -fun invoker(gen : fun() : Int) : Int = 0 +fun invoker(gen : fun() : Int) : Int = 0 //more tests fun t1() { diff --git a/compiler/testData/checkerWithErrorTypes/quick/regressions/kt439.jet b/compiler/testData/checkerWithErrorTypes/quick/regressions/kt439.jet index a914cc023c5..176e3280e18 100644 --- a/compiler/testData/checkerWithErrorTypes/quick/regressions/kt439.jet +++ b/compiler/testData/checkerWithErrorTypes/quick/regressions/kt439.jet @@ -2,6 +2,6 @@ inline fun run1(body : fun() : T) : T = body() -fun main1(args : Array) { +fun main1(args : Array) { run1 @l{ 1 } // should not be an error -} +} \ No newline at end of file diff --git a/compiler/testData/checkerWithErrorTypes/quick/regressions/kt442.jet b/compiler/testData/checkerWithErrorTypes/quick/regressions/kt442.jet index 79390466a35..0618918b14a 100644 --- a/compiler/testData/checkerWithErrorTypes/quick/regressions/kt442.jet +++ b/compiler/testData/checkerWithErrorTypes/quick/regressions/kt442.jet @@ -6,7 +6,7 @@ fun testFunny() { val a : Int = funny {1} } -fun funny2(f : fun(t : T) : T) : T {} +fun funny2(f : fun(t : T) : T) : T {} fun testFunny2() { val a : Int = funny2 {it} diff --git a/compiler/testData/checkerWithErrorTypes/quick/regressions/kt455.jet b/compiler/testData/checkerWithErrorTypes/quick/regressions/kt455.jet index d8d20b06265..0db1c1c4ae9 100644 --- a/compiler/testData/checkerWithErrorTypes/quick/regressions/kt455.jet +++ b/compiler/testData/checkerWithErrorTypes/quick/regressions/kt455.jet @@ -7,4 +7,4 @@ fun foo() { doSmth(a) //error doSmth(a) //no repeat error } -fun doSmth(i: Int) {} +fun doSmth(i: Int) {} \ No newline at end of file diff --git a/compiler/testData/checkerWithErrorTypes/quick/regressions/kt459.jet b/compiler/testData/checkerWithErrorTypes/quick/regressions/kt459.jet index faa62212f38..930e9e76670 100644 --- a/compiler/testData/checkerWithErrorTypes/quick/regressions/kt459.jet +++ b/compiler/testData/checkerWithErrorTypes/quick/regressions/kt459.jet @@ -6,4 +6,4 @@ fun test() { attributes["href"] = "1" // inference fails, but it shouldn't } -fun java.util.Map.set(key : K, value : V) {}//= this.put(key, value) +fun java.util.Map.set(key : K, value : V) {}//= this.put(key, value) \ No newline at end of file diff --git a/compiler/testData/checkerWithErrorTypes/quick/regressions/kt58.jet b/compiler/testData/checkerWithErrorTypes/quick/regressions/kt58.jet index 57562a61f37..d6a0e64456f 100644 --- a/compiler/testData/checkerWithErrorTypes/quick/regressions/kt58.jet +++ b/compiler/testData/checkerWithErrorTypes/quick/regressions/kt58.jet @@ -88,5 +88,5 @@ fun t7() : Int { } } -fun doSmth(i: Int) { -} +fun doSmth(i: Int) { +} \ No newline at end of file diff --git a/compiler/testData/checkerWithErrorTypes/quick/regressions/kt618.jet b/compiler/testData/checkerWithErrorTypes/quick/regressions/kt618.jet index 569d286c17b..f70f921730e 100644 --- a/compiler/testData/checkerWithErrorTypes/quick/regressions/kt618.jet +++ b/compiler/testData/checkerWithErrorTypes/quick/regressions/kt618.jet @@ -1,19 +1,19 @@ namespace lol class B() { - fun plusAssign(other : B) : String { + fun plusAssign(other : B) : String { return "s" } - fun minusAssign(other : B) : String { + fun minusAssign(other : B) : String { return "s" } - fun modAssign(other : B) : String { + fun modAssign(other : B) : String { return "s" } - fun divAssign(other : B) : String { + fun divAssign(other : B) : String { return "s" } - fun timesAssign(other : B) : String { + fun timesAssign(other : B) : String { return "s" } } @@ -25,4 +25,4 @@ fun main(args : Array) { c /= B() c -= B() c %= B() -} +} \ No newline at end of file diff --git a/compiler/testData/checkerWithErrorTypes/quick/regressions/kt629.jet b/compiler/testData/checkerWithErrorTypes/quick/regressions/kt629.jet index f9a92abc839..3d52542ad7f 100644 --- a/compiler/testData/checkerWithErrorTypes/quick/regressions/kt629.jet +++ b/compiler/testData/checkerWithErrorTypes/quick/regressions/kt629.jet @@ -4,7 +4,7 @@ namespace kt629 class A() { var p = "yeah" - fun mod(other : A) : A { + fun mod(other : A) : A { return A(); } } diff --git a/compiler/testData/checkerWithErrorTypes/quick/shadowing/ShadowParameterInFunctionBody.jet b/compiler/testData/checkerWithErrorTypes/quick/shadowing/ShadowParameterInFunctionBody.jet index 3f99c1e45bb..943e005359e 100644 --- a/compiler/testData/checkerWithErrorTypes/quick/shadowing/ShadowParameterInFunctionBody.jet +++ b/compiler/testData/checkerWithErrorTypes/quick/shadowing/ShadowParameterInFunctionBody.jet @@ -1,5 +1,4 @@ - -fun f(p: Int): Int { +fun f(p: Int): Int { val p = 2 return p -} +} \ No newline at end of file diff --git a/compiler/testData/checkerWithErrorTypes/quick/shadowing/ShadowParameterInNestedBlockInFor.jet b/compiler/testData/checkerWithErrorTypes/quick/shadowing/ShadowParameterInNestedBlockInFor.jet index e3e91fbe857..303434c77a1 100644 --- a/compiler/testData/checkerWithErrorTypes/quick/shadowing/ShadowParameterInNestedBlockInFor.jet +++ b/compiler/testData/checkerWithErrorTypes/quick/shadowing/ShadowParameterInNestedBlockInFor.jet @@ -1,7 +1,7 @@ -fun f(i: Int) { +fun f(i: Int) { for (j in 1..100) { { var i = 12 } } -} +} \ No newline at end of file diff --git a/compiler/tests/org/jetbrains/jet/checkers/CheckerTestUtilTest.java b/compiler/tests/org/jetbrains/jet/checkers/CheckerTestUtilTest.java index cdf385d3158..13258e0d505 100644 --- a/compiler/tests/org/jetbrains/jet/checkers/CheckerTestUtilTest.java +++ b/compiler/tests/org/jetbrains/jet/checkers/CheckerTestUtilTest.java @@ -39,7 +39,7 @@ public class CheckerTestUtilTest extends JetLiteFixture { doTest(new TheTest("Missing TYPE_MISMATCH at 56 to 57") { @Override protected void makeTestData(List diagnostics, List diagnosedRanges) { - diagnostics.remove(0); + diagnostics.remove(1); } }); } @@ -48,7 +48,7 @@ public class CheckerTestUtilTest extends JetLiteFixture { doTest(new TheTest("Unexpected TYPE_MISMATCH at 56 to 57") { @Override protected void makeTestData(List diagnostics, List diagnosedRanges) { - diagnosedRanges.remove(0); + diagnosedRanges.remove(1); } }); } @@ -57,7 +57,7 @@ public class CheckerTestUtilTest extends JetLiteFixture { doTest(new TheTest("Unexpected TYPE_MISMATCH at 56 to 57", "Missing UNRESOLVED_REFERENCE at 166 to 168") { @Override protected void makeTestData(List diagnostics, List diagnosedRanges) { - diagnosedRanges.remove(0); + diagnosedRanges.remove(1); diagnostics.remove(diagnostics.size() - 1); } }); @@ -67,7 +67,7 @@ public class CheckerTestUtilTest extends JetLiteFixture { doTest(new TheTest("Unexpected NONE_APPLICABLE at 122 to 123", "Missing TYPE_MISMATCH at 161 to 169") { @Override protected void makeTestData(List diagnostics, List diagnosedRanges) { - diagnosedRanges.remove(3); + diagnosedRanges.remove(4); diagnostics.remove(diagnostics.size() - 3); } }); diff --git a/idea/src/org/jetbrains/jet/plugin/annotations/JetPsiChecker.java b/idea/src/org/jetbrains/jet/plugin/annotations/JetPsiChecker.java index 5dfb0bd94e4..cb7e36c4a98 100644 --- a/idea/src/org/jetbrains/jet/plugin/annotations/JetPsiChecker.java +++ b/idea/src/org/jetbrains/jet/plugin/annotations/JetPsiChecker.java @@ -88,7 +88,7 @@ public class JetPsiChecker implements Annotator { } else if (diagnostic.getSeverity() == Severity.WARNING) { annotation = holder.createWarningAnnotation(diagnostic.getFactory().getTextRange(diagnostic), getMessage(diagnostic)); - if (diagnostic.getFactory() == Errors.UNUSED_VARIABLE || diagnostic.getFactory() == Errors.ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE) { + if (diagnostic.getFactory() instanceof UnusedElementDiagnosticFactory) { annotation.setHighlightType(ProblemHighlightType.LIKE_UNUSED_SYMBOL); } } diff --git a/idea/testData/checker/Abstract.jet b/idea/testData/checker/Abstract.jet index 4c34620c5e5..b9ad43da2c2 100644 --- a/idea/testData/checker/Abstract.jet +++ b/idea/testData/checker/Abstract.jet @@ -160,7 +160,7 @@ abstract class B3(i: Int) { this(): this(1) } -fun foo(a: B3) { +fun foo(a: B3) { val a = B3() val b = B1(2, "s") } \ No newline at end of file diff --git a/idea/testData/checker/BinaryCallsOnNullableValues.jet b/idea/testData/checker/BinaryCallsOnNullableValues.jet index a66c709b010..31186881eea 100644 --- a/idea/testData/checker/BinaryCallsOnNullableValues.jet +++ b/idea/testData/checker/BinaryCallsOnNullableValues.jet @@ -1,13 +1,13 @@ class A() { - fun equals(a : Any?) : Boolean = false + fun equals(a : Any?) : Boolean = false } class B() { - fun equals(a : Any?) : Boolean? = false + fun equals(a : Any?) : Boolean? = false } class C() { - fun equals(a : Any?) : Int = 0 + fun equals(a : Any?) : Int = 0 } fun f(): Unit { diff --git a/idea/testData/checker/BreakContinue.jet b/idea/testData/checker/BreakContinue.jet index de5243502d8..f7e34060980 100644 --- a/idea/testData/checker/BreakContinue.jet +++ b/idea/testData/checker/BreakContinue.jet @@ -1,6 +1,6 @@ class C { - fun f (a : Boolean, b : Boolean) { + fun f (a : Boolean, b : Boolean) { @b (while (true) @a { break@f diff --git a/idea/testData/checker/ExtensionFunctions.jet b/idea/testData/checker/ExtensionFunctions.jet index 3fd3dcffbfb..4076cdfff62 100644 --- a/idea/testData/checker/ExtensionFunctions.jet +++ b/idea/testData/checker/ExtensionFunctions.jet @@ -1,7 +1,7 @@ fun Int?.optint() : Unit {} val Int?.optval : Unit = () -fun T.foo(x : E, y : A) : T { +fun T.foo(x : E, y : A) : T { y.plus(1) y plus 1 y + 1.0 @@ -13,7 +13,7 @@ fun T.foo(x : E, y : A) : T { class A -fun A.plus(a : Any) { +fun A.plus(a : Any) { 1.foo() true.foo() @@ -21,11 +21,11 @@ fun A.plus(a : Any) { 1 } -fun A.plus(a : Int) { +fun A.plus(a : Int) { 1 } -fun T.minus(t : T) : Int = 1 +fun T.minus(t : T) : Int = 1 fun test() { val y = 1.abs @@ -39,15 +39,15 @@ fun Int.foo() = this namespace null_safety { - fun parse(cmd: String): Command? { return null } + fun parse(cmd: String): Command? { return null } class Command() { // fun equals(other : Any?) : Boolean val foo : Int = 0 } - fun Any.equals(other : Any?) : Boolean = true - fun Any?.equals1(other : Any?) : Boolean = true - fun Any.equals2(other : Any?) : Boolean = true + fun Any.equals(other : Any?) : Boolean = true + fun Any?.equals1(other : Any?) : Boolean = true + fun Any.equals2(other : Any?) : Boolean = true fun main(args: Array) { diff --git a/idea/testData/checker/ResolveToJava.jet b/idea/testData/checker/ResolveToJava.jet index 17eafa7b2d8..e8cb67fceb3 100644 --- a/idea/testData/checker/ResolveToJava.jet +++ b/idea/testData/checker/ResolveToJava.jet @@ -7,7 +7,7 @@ import java.lang.Comparable as Com val l : List = ArrayList() -fun test(l : java.util.List) { +fun test(l : java.util.List) { val x : java.List val y : java.util.List val b : java.lang.Object diff --git a/idea/testData/checker/UnreachableCode.jet b/idea/testData/checker/UnreachableCode.jet index 15ba14178fc..3fdd4ffe9df 100644 --- a/idea/testData/checker/UnreachableCode.jet +++ b/idea/testData/checker/UnreachableCode.jet @@ -45,7 +45,7 @@ fun t3() : Any { 1 } -fun t4(a : Boolean) : Int { +fun t4(a : Boolean) : Int { do { return 1 } @@ -53,7 +53,7 @@ fun t4(a : Boolean) : Int { 1 } -fun t4break(a : Boolean) : Int { +fun t4break(a : Boolean) : Int { do { break } diff --git a/idea/testData/checker/Unresolved.jet b/idea/testData/checker/Unresolved.jet index 159fe931f0b..a4b85b6b54a 100644 --- a/idea/testData/checker/Unresolved.jet +++ b/idea/testData/checker/Unresolved.jet @@ -28,4 +28,4 @@ fun testUnresolved() { } } -fun foo1(i: Int) {} +fun foo1(i: Int) {} diff --git a/idea/testData/checker/Variance.jet b/idea/testData/checker/Variance.jet index da4384f88bb..756214a3145 100644 --- a/idea/testData/checker/Variance.jet +++ b/idea/testData/checker/Variance.jet @@ -19,17 +19,17 @@ fun foo(c: Consumer, p: Producer, u: Usual) { //Arrays copy example class Array(val length : Int, val t : T) { - fun get(index : Int) : T { return t } - fun set(index : Int, value : T) { /* ... */ } + fun get(index : Int) : T { return t } + fun set(index : Int, value : T) { /* ... */ } } -fun copy1(from : Array, to : Array) {} +fun copy1(from : Array, to : Array) {} -fun copy2(from : Array, to : Array) {} +fun copy2(from : Array, to : Array) {} -fun copy3(from : Array, to : Array) {} +fun copy3(from : Array, to : Array) {} -fun copy4(from : Array, to : Array) {} +fun copy4(from : Array, to : Array) {} fun f(ints: Array, any: Array, numbers: Array) { copy1(ints, any) diff --git a/idea/testData/checker/regression/AmbiguityOnLazyTypeComputation.jet b/idea/testData/checker/regression/AmbiguityOnLazyTypeComputation.jet index 779ee4c4d97..813be88472a 100644 --- a/idea/testData/checker/regression/AmbiguityOnLazyTypeComputation.jet +++ b/idea/testData/checker/regression/AmbiguityOnLazyTypeComputation.jet @@ -7,6 +7,6 @@ val b : Foo = Foo() val a1 = b.compareTo(2) class Foo() { - fun compareTo(other : Byte) : Int = 0 - fun compareTo(other : Char) : Int = 0 + fun compareTo(other : Byte) : Int = 0 + fun compareTo(other : Char) : Int = 0 } diff --git a/idea/testData/checker/regression/CoercionToUnit.jet b/idea/testData/checker/regression/CoercionToUnit.jet index ec8c8e32275..f02143657f7 100644 --- a/idea/testData/checker/regression/CoercionToUnit.jet +++ b/idea/testData/checker/regression/CoercionToUnit.jet @@ -1,4 +1,4 @@ -fun foo(u : Unit) : Int = 1 +fun foo(u : Unit) : Int = 1 fun test() : Int { foo(1) diff --git a/idea/testData/checker/regression/Jet124.jet b/idea/testData/checker/regression/Jet124.jet index 48aa4644dea..317b1438f41 100644 --- a/idea/testData/checker/regression/Jet124.jet +++ b/idea/testData/checker/regression/Jet124.jet @@ -1,8 +1,8 @@ fun foo1() : fun (Int) : Int = { (x: Int) => x } fun foo() { - val h : fun (Int) : Int = foo1(); + val h : fun (Int) : Int = foo1(); h(1) - val m : fun (Int) : Int = {(a : Int) => 1}//foo1() + val m : fun (Int) : Int = {(a : Int) => 1}//foo1() m(1) } \ No newline at end of file diff --git a/idea/testData/checker/regression/Jet169.jet b/idea/testData/checker/regression/Jet169.jet index 2bed1f918f3..0ba52f8e3cb 100644 --- a/idea/testData/checker/regression/Jet169.jet +++ b/idea/testData/checker/regression/Jet169.jet @@ -1,4 +1,4 @@ -fun set(key : String, value : String) { +fun set(key : String, value : String) { val a : String? = "" when (a) { "" => a.get(0) diff --git a/idea/testData/checker/regression/Jet69.jet b/idea/testData/checker/regression/Jet69.jet index dd198aa0f61..346a98fd25a 100644 --- a/idea/testData/checker/regression/Jet69.jet +++ b/idea/testData/checker/regression/Jet69.jet @@ -1,6 +1,6 @@ class Command() {} -fun parse(cmd: String): Command? { return null } +fun parse(cmd: String): Command? { return null } fun Any.equals(other : Any?) : Boolean = this === other diff --git a/idea/testData/checker/regression/ScopeForSecondaryConstructors.jet b/idea/testData/checker/regression/ScopeForSecondaryConstructors.jet index f4516941508..84c59da5a8a 100644 --- a/idea/testData/checker/regression/ScopeForSecondaryConstructors.jet +++ b/idea/testData/checker/regression/ScopeForSecondaryConstructors.jet @@ -8,7 +8,7 @@ } this(var bar : Int) : this(1, 1, 1) { - bar = 1 + bar = 1 this.bar 1 : Int val a : Int =1 diff --git a/idea/testData/checker/regression/SpecififcityByReceiver.jet b/idea/testData/checker/regression/SpecififcityByReceiver.jet index b25f919e597..67d6776baba 100644 --- a/idea/testData/checker/regression/SpecififcityByReceiver.jet +++ b/idea/testData/checker/regression/SpecififcityByReceiver.jet @@ -1,4 +1,4 @@ -fun Any.equals(other : Any?) : Boolean = true +fun Any.equals(other : Any?) : Boolean = true fun main(args: Array) { diff --git a/idea/testData/checker/regression/WrongTraceInCallResolver.jet b/idea/testData/checker/regression/WrongTraceInCallResolver.jet index 2c88d2450dd..30af5e2d8e8 100644 --- a/idea/testData/checker/regression/WrongTraceInCallResolver.jet +++ b/idea/testData/checker/regression/WrongTraceInCallResolver.jet @@ -1,8 +1,8 @@ open class Foo {} open class Bar {} -fun foo(x : Int) {} -fun foo(x : Long) {} +fun foo(x : Int) {} +fun foo(x : Long) {} fun f(): Unit { foo<Int, Int>(1)