From 168b32920b839f64d0bde747c0bbe90e4112a705 Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Tue, 10 Jun 2014 17:25:16 +0400 Subject: [PATCH] Pseudocode: Do not bind call value to callee expressions --- .../jet/lang/cfg/JetControlFlowBuilder.java | 14 +- .../cfg/JetControlFlowBuilderAdapter.java | 18 +- .../jet/lang/cfg/JetControlFlowProcessor.java | 115 ++++++----- .../JetControlFlowInstructionsGenerator.java | 27 +-- .../instructions/eval/ReadValueInstruction.kt | 7 +- .../eval/operationInstructions.kt | 7 +- .../basic/IfWithUninitialized.values | 8 +- .../basic/UsageInFunctionLiteral.values | 8 +- .../cfg-variables/basic/VariablesUsage.values | 10 +- .../referenceToPropertyInitializer.values | 19 +- .../bugs/varInitializationInIf.instructions | 2 +- .../bugs/varInitializationInIf.values | 16 +- .../bugs/varInitializationInIfInCycle.values | 6 +- .../lexicalScopes/doWhileScope.values | 5 +- .../lexicalScopes/forScope.values | 5 +- .../lexicalScopes/functionLiteralScope.values | 3 +- .../lexicalScopes/localFunctionScope.values | 3 +- .../localFunctionScopeWithoutBody.values | 3 +- .../lexicalScopes/tryScope.values | 5 +- .../testData/cfg/arrays/ArrayAccess.values | 6 +- .../cfg/arrays/ArrayOfFunctions.values | 4 +- .../cfg/arrays/arrayAccessExpression.values | 5 +- compiler/testData/cfg/arrays/arrayInc.values | 1 - .../cfg/arrays/arraySetPlusAssign.values | 3 +- compiler/testData/cfg/basic/Basic.values | 31 ++- .../cfg/controlStructures/Finally.values | 85 ++++---- .../controlStructures/FinallyTestCopy.values | 64 +++---- .../testData/cfg/controlStructures/For.values | 8 +- .../testData/cfg/controlStructures/If.values | 13 +- .../OnlyWhileInFunctionBody.values | 10 +- .../testData/cfg/conventions/equals.values | 5 +- .../cfg/conventions/incrementAtTheEnd.values | 5 +- .../testData/cfg/conventions/invoke.values | 4 +- .../testData/cfg/conventions/notEqual.values | 5 +- .../testData/cfg/deadCode/DeadCode.values | 8 +- .../cfg/deadCode/stringTemplate.values | 5 +- .../functions/FailFunction.values | 5 +- .../local/ObjectExpression.values | 5 +- .../properties/DelegatedProperty.values | 3 +- .../backingFieldQualifiedWithThis.values | 5 +- .../cfg/expressions/Assignments.values | 11 +- .../chainedQualifiedExpression.values | 181 +++++++----------- .../expressions/expressionAsFunction.values | 4 +- .../cfg/expressions/nothingExpr.values | 8 +- .../cfg/expressions/thisExpression.values | 5 +- .../expressions/unresolvedCall.instructions | 2 +- .../cfg/expressions/unresolvedCall.values | 5 +- .../testData/cfg/tailCalls/finally.values | 5 +- .../cfg/tailCalls/finallyWithReturn.values | 3 +- compiler/testData/cfg/tailCalls/sum.values | 25 +-- compiler/testData/cfg/tailCalls/try.values | 3 +- .../cfg/tailCalls/tryCatchFinally.values | 15 +- 52 files changed, 351 insertions(+), 477 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetControlFlowBuilder.java b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetControlFlowBuilder.java index 23fb11c0a5a..6e7456491e1 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetControlFlowBuilder.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetControlFlowBuilder.java @@ -103,13 +103,13 @@ public interface JetControlFlowBuilder { void loadUnit(@NotNull JetExpression expression); @NotNull - ValuedInstruction loadConstant(@NotNull JetExpression expression, @Nullable CompileTimeConstant constant); + InstructionWithValue loadConstant(@NotNull JetExpression expression, @Nullable CompileTimeConstant constant); @NotNull - ValuedInstruction createAnonymousObject(@NotNull JetObjectLiteralExpression expression); + InstructionWithValue createAnonymousObject(@NotNull JetObjectLiteralExpression expression); @NotNull - ValuedInstruction createFunctionLiteral(@NotNull JetFunctionLiteralExpression expression); + InstructionWithValue createFunctionLiteral(@NotNull JetFunctionLiteralExpression expression); @NotNull - ValuedInstruction loadStringTemplate(@NotNull JetStringTemplateExpression expression, @NotNull List inputValues); + InstructionWithValue loadStringTemplate(@NotNull JetStringTemplateExpression expression, @NotNull List inputValues); @NotNull MagicInstruction magic( @@ -130,14 +130,16 @@ public interface JetControlFlowBuilder { ReadValueInstruction readThis(@NotNull JetExpression expression, @Nullable ReceiverParameterDescriptor parameterDescriptor); @NotNull ReadValueInstruction readVariable( - @NotNull JetExpression expression, + @NotNull JetElement instructionElement, + @NotNull JetExpression valueElement, @NotNull ResolvedCall resolvedCall, @NotNull Map receiverValues ); @NotNull CallInstruction call( - @NotNull JetExpression expression, + @NotNull JetElement instructionElement, + @Nullable JetExpression valueElement, @NotNull ResolvedCall resolvedCall, @NotNull Map receiverValues, @NotNull Map arguments diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetControlFlowBuilderAdapter.java b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetControlFlowBuilderAdapter.java index 89c05a7b574..cedd10e5a53 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetControlFlowBuilderAdapter.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetControlFlowBuilderAdapter.java @@ -44,25 +44,25 @@ public abstract class JetControlFlowBuilderAdapter implements JetControlFlowBuil @NotNull @Override - public ValuedInstruction loadConstant(@NotNull JetExpression expression, @Nullable CompileTimeConstant constant) { + public InstructionWithValue loadConstant(@NotNull JetExpression expression, @Nullable CompileTimeConstant constant) { return getDelegateBuilder().loadConstant(expression, constant); } @NotNull @Override - public ValuedInstruction createAnonymousObject(@NotNull JetObjectLiteralExpression expression) { + public InstructionWithValue createAnonymousObject(@NotNull JetObjectLiteralExpression expression) { return getDelegateBuilder().createAnonymousObject(expression); } @NotNull @Override - public ValuedInstruction createFunctionLiteral(@NotNull JetFunctionLiteralExpression expression) { + public InstructionWithValue createFunctionLiteral(@NotNull JetFunctionLiteralExpression expression) { return getDelegateBuilder().createFunctionLiteral(expression); } @NotNull @Override - public ValuedInstruction loadStringTemplate(@NotNull JetStringTemplateExpression expression, @NotNull List inputValues) { + public InstructionWithValue loadStringTemplate(@NotNull JetStringTemplateExpression expression, @NotNull List inputValues) { return getDelegateBuilder().loadStringTemplate(expression, inputValues); } @@ -93,21 +93,23 @@ public abstract class JetControlFlowBuilderAdapter implements JetControlFlowBuil @NotNull @Override public ReadValueInstruction readVariable( - @NotNull JetExpression expression, + @NotNull JetElement instructionElement, + @NotNull JetExpression valueElement, @NotNull ResolvedCall resolvedCall, @NotNull Map receiverValues) { - return getDelegateBuilder().readVariable(expression, resolvedCall, receiverValues); + return getDelegateBuilder().readVariable(instructionElement, valueElement, resolvedCall, receiverValues); } @NotNull @Override public CallInstruction call( - @NotNull JetExpression expression, + @NotNull JetElement instructionElement, + @Nullable JetExpression valueElement, @NotNull ResolvedCall resolvedCall, @NotNull Map receiverValues, @NotNull Map arguments ) { - return getDelegateBuilder().call(expression, resolvedCall, receiverValues, arguments); + return getDelegateBuilder().call(instructionElement, valueElement, resolvedCall, receiverValues, arguments); } @NotNull 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 d95fddbec9c..b78ee266bfc 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetControlFlowProcessor.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetControlFlowProcessor.java @@ -29,6 +29,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.lang.cfg.pseudocode.*; import org.jetbrains.jet.lang.cfg.pseudocode.instructions.eval.AccessTarget; +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.eval.InstructionWithValue; import org.jetbrains.jet.lang.descriptors.*; import org.jetbrains.jet.lang.psi.*; import org.jetbrains.jet.lang.psi.psiUtil.PsiUtilPackage; @@ -308,9 +309,9 @@ public class JetControlFlowProcessor { ResolvedCall resolvedCall = getResolvedCall(expression); if (resolvedCall instanceof VariableAsFunctionResolvedCall) { VariableAsFunctionResolvedCall variableAsFunctionResolvedCall = (VariableAsFunctionResolvedCall) resolvedCall; - generateCall(expression, variableAsFunctionResolvedCall.getVariableCall()); + generateCall(expression, expression, variableAsFunctionResolvedCall.getVariableCall()); } - else if (!generateCall(expression) && !(expression.getParent() instanceof JetCallExpression)) { + else if (!generateCall(expression, expression) && !(expression.getParent() instanceof JetCallExpression)) { createNonSyntheticValue(expression, generateAndGetReceiverIfAny(expression)); } } @@ -361,17 +362,24 @@ public class JetControlFlowProcessor { } } else if (operationType == EQ) { - visitAssignment(left, getDeferredValue(right, true), expression); + visitAssignment(left, getDeferredValue(right), expression); } else if (OperatorConventions.ASSIGNMENT_OPERATIONS.containsKey(operationType)) { - if (generateCall(operationReference)) { - ResolvedCall resolvedCall = getResolvedCall(operationReference); - assert resolvedCall != null : "Generation succeeded, but no call is found: " + expression.getText(); + ResolvedCall resolvedCall = getResolvedCall(operationReference); + if (resolvedCall != null) { CallableDescriptor descriptor = resolvedCall.getResultingDescriptor(); Name assignMethodName = OperatorConventions.getNameForOperationSymbol((JetToken) expression.getOperationToken()); - if (!descriptor.getName().equals(assignMethodName)) { - // plus() called, assignment needed - visitAssignment(left, getDeferredValue(operationReference, false), expression); + if (descriptor.getName().equals(assignMethodName)) { + generateCall(expression, operationReference, resolvedCall); + } + else { + /* At this point assignment of the form a += b actually means a = a + b + * So we first generate call of "+" operation and then use its output pseudo-value + * as a right-hand side when generating assignment call + */ + Function0 rhsDeferredValue = + getValueAsFunction(generateCall(null, operationReference, resolvedCall).getOutputValue()); + visitAssignment(left, rhsDeferredValue, expression); } } else { @@ -389,23 +397,27 @@ public class JetControlFlowProcessor { mergeValues(Arrays.asList(left, right), expression); } else { - if (generateCall(operationReference)) { - copyValue(operationReference, expression); - } - else { + if (!generateCall(expression, operationReference)) { generateBothArguments(expression); } } } - private Function0 getDeferredValue(final JetExpression right, final boolean generate) { + private Function0 getValueAsFunction(final PseudoValue value) { return new Function0() { @Override public PseudoValue invoke() { - if (generate) { - generateInstructions(right, NOT_IN_CONDITION); - } - return builder.getBoundValue(right); + return value; + } + }; + } + + private Function0 getDeferredValue(final JetExpression expression) { + return new Function0() { + @Override + public PseudoValue invoke() { + generateInstructions(expression, NOT_IN_CONDITION); + return builder.getBoundValue(expression); } }; } @@ -461,7 +473,9 @@ public class JetControlFlowProcessor { } private void generateArrayAssignment( - JetArrayAccessExpression lhs, @NotNull Function0 rhsDeferredValue, JetExpression parentExpression + JetArrayAccessExpression lhs, + @NotNull Function0 rhsDeferredValue, + JetExpression parentExpression ) { ResolvedCall setResolvedCall = trace.get(BindingContext.INDEXED_LVALUE_SET, lhs); @@ -481,7 +495,7 @@ public class JetControlFlowProcessor { SmartFMap argumentValues = getArraySetterArguments(rhsDeferredValue, setResolvedCall); - builder.call(parentExpression, setResolvedCall, receiverValues, argumentValues); + builder.call(parentExpression, parentExpression, setResolvedCall, receiverValues, argumentValues); } /* We assume that assignment right-hand side corresponds to the last argument of the call @@ -548,7 +562,7 @@ public class JetControlFlowProcessor { private void generateArrayAccess(JetArrayAccessExpression arrayAccessExpression, @Nullable ResolvedCall resolvedCall) { mark(arrayAccessExpression); - if (!checkAndGenerateCall(arrayAccessExpression, resolvedCall)) { + if (!checkAndGenerateCall(arrayAccessExpression, arrayAccessExpression, resolvedCall)) { generateArrayAccessWithoutCall(arrayAccessExpression); } } @@ -582,23 +596,23 @@ public class JetControlFlowProcessor { if (JetTokens.EXCLEXCL == operationType) { generateInstructions(baseExpression, NOT_IN_CONDITION); builder.predefinedOperation(expression, NOT_NULL_ASSERTION, elementsToValues(Collections.singletonList(baseExpression))); + return; + } + + boolean incrementOrDecrement = isIncrementOrDecrement(operationType); + ResolvedCall resolvedCall = getResolvedCall(operationSign); + + PseudoValue rhsValue; + if (resolvedCall != null) { + rhsValue = generateCall(incrementOrDecrement ? null : expression, operationSign, resolvedCall).getOutputValue(); } else { - boolean resolved = generateCall(operationSign); - if (!resolved) { - generateInstructions(baseExpression, NOT_IN_CONDITION); - } + generateInstructions(baseExpression, NOT_IN_CONDITION); + rhsValue = createNonSyntheticValue(expression, baseExpression); + } - if (isIncrementOrDecrement(operationType)) { - // We skip dup's and other subtleties here - visitAssignment(baseExpression, getDeferredValue(operationSign, false), expression); - } - else if (resolved) { - copyValue(operationSign, expression); - } - else { - createNonSyntheticValue(expression, baseExpression); - } + if (incrementOrDecrement) { + visitAssignment(baseExpression, getValueAsFunction(rhsValue), expression); } } @@ -1055,7 +1069,7 @@ public class JetControlFlowProcessor { mark(expression); JetExpression calleeExpression = expression.getCalleeExpression(); - if (!generateCall(calleeExpression)) { + if (!generateCall(expression, calleeExpression)) { List inputExpressions = new ArrayList(); for (ValueArgument argument : expression.getValueArguments()) { JetExpression argumentExpression = argument.getArgumentExpression(); @@ -1072,10 +1086,8 @@ public class JetControlFlowProcessor { inputExpressions.add(calleeExpression); inputExpressions.add(generateAndGetReceiverIfAny(expression)); - createNonSyntheticValue(calleeExpression != null ? calleeExpression : expression, inputExpressions); + createNonSyntheticValue(expression, inputExpressions); } - - copyValue(calleeExpression, expression); } @Nullable @@ -1097,7 +1109,7 @@ public class JetControlFlowProcessor { builder.declareVariable(property); JetExpression initializer = property.getInitializer(); if (initializer != null) { - visitAssignment(property, getDeferredValue(initializer, true), property); + visitAssignment(property, getDeferredValue(initializer), property); } JetExpression delegate = property.getDelegateExpression(); if (delegate != null) { @@ -1124,6 +1136,7 @@ public class JetControlFlowProcessor { ResolvedCall resolvedCall = trace.get(BindingContext.COMPONENT_RESOLVED_CALL, entry); PseudoValue writtenValue = resolvedCall != null ? builder.call( + entry, entry, resolvedCall, getReceiverValues(resolvedCall, false), @@ -1176,7 +1189,7 @@ public class JetControlFlowProcessor { public void visitArrayAccessExpressionVoid(@NotNull JetArrayAccessExpression expression, CFPContext context) { mark(expression); ResolvedCall getMethodResolvedCall = trace.get(BindingContext.INDEXED_LVALUE_GET, expression); - if (!checkAndGenerateCall(expression, getMethodResolvedCall)) { + if (!checkAndGenerateCall(expression, expression, getMethodResolvedCall)) { generateArrayAccess(expression, getMethodResolvedCall); } } @@ -1357,25 +1370,25 @@ public class JetControlFlowProcessor { return trace.get(BindingContext.RESOLVED_CALL, expression); } - private boolean generateCall(@Nullable JetExpression calleeExpression) { + private boolean generateCall(JetExpression callExpression, @Nullable JetExpression calleeExpression) { if (calleeExpression == null) return false; - return checkAndGenerateCall(calleeExpression, getResolvedCall(calleeExpression)); + return checkAndGenerateCall(callExpression, calleeExpression, getResolvedCall(calleeExpression)); } - private boolean checkAndGenerateCall(JetExpression calleeExpression, @Nullable ResolvedCall resolvedCall) { + private boolean checkAndGenerateCall(JetExpression callExpression, JetExpression calleeExpression, @Nullable ResolvedCall resolvedCall) { if (resolvedCall == null) { builder.compilationError(calleeExpression, "No resolved call"); return false; } - generateCall(calleeExpression, resolvedCall); + generateCall(callExpression, calleeExpression, resolvedCall); return true; } - private void generateCall(JetExpression calleeExpression, ResolvedCall resolvedCall) { + @NotNull + private InstructionWithValue generateCall(JetExpression callExpression, JetExpression calleeExpression, ResolvedCall resolvedCall) { if (resolvedCall instanceof VariableAsFunctionResolvedCall) { VariableAsFunctionResolvedCall variableAsFunctionResolvedCall = (VariableAsFunctionResolvedCall) resolvedCall; - generateCall(calleeExpression, variableAsFunctionResolvedCall.getFunctionCall()); - return; + return generateCall(callExpression, calleeExpression, variableAsFunctionResolvedCall.getFunctionCall()); } CallableDescriptor resultingDescriptor = resolvedCall.getResultingDescriptor(); @@ -1391,11 +1404,9 @@ public class JetControlFlowProcessor { if (resultingDescriptor instanceof VariableDescriptor) { assert parameterValues.isEmpty() : "Variable-based call with non-empty argument list: " + resolvedCall.getCall().getCallElement().getText(); - builder.readVariable(calleeExpression, resolvedCall, receivers); - } - else { - builder.call(calleeExpression, resolvedCall, receivers, parameterValues); + return builder.readVariable(calleeExpression, callExpression, resolvedCall, receivers); } + return builder.call(calleeExpression, callExpression, resolvedCall, receivers, parameterValues); } @NotNull diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/JetControlFlowInstructionsGenerator.java b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/JetControlFlowInstructionsGenerator.java index ccd7a406c32..114c4d809e1 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/JetControlFlowInstructionsGenerator.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/JetControlFlowInstructionsGenerator.java @@ -401,25 +401,25 @@ public class JetControlFlowInstructionsGenerator extends JetControlFlowBuilderAd @NotNull @Override - public ValuedInstruction loadConstant(@NotNull JetExpression expression, @Nullable CompileTimeConstant constant) { + public InstructionWithValue loadConstant(@NotNull JetExpression expression, @Nullable CompileTimeConstant constant) { return read(expression); } @NotNull @Override - public ValuedInstruction createAnonymousObject(@NotNull JetObjectLiteralExpression expression) { + public InstructionWithValue createAnonymousObject(@NotNull JetObjectLiteralExpression expression) { return read(expression); } @NotNull @Override - public ValuedInstruction createFunctionLiteral(@NotNull JetFunctionLiteralExpression expression) { + public InstructionWithValue createFunctionLiteral(@NotNull JetFunctionLiteralExpression expression) { return read(expression); } @NotNull @Override - public ValuedInstruction loadStringTemplate(@NotNull JetStringTemplateExpression expression, @NotNull List inputValues) { + public InstructionWithValue loadStringTemplate(@NotNull JetStringTemplateExpression expression, @NotNull List inputValues) { if (inputValues.isEmpty()) return read(expression); return magic(expression, expression, inputValues, PseudocodePackage.expectedTypeFor(AllTypes.instance$, inputValues), false); } @@ -457,24 +457,27 @@ public class JetControlFlowInstructionsGenerator extends JetControlFlowBuilderAd @NotNull @Override public ReadValueInstruction readVariable( - @NotNull JetExpression expression, + @NotNull JetElement instructionElement, + @NotNull JetExpression valueElement, @NotNull ResolvedCall resolvedCall, @NotNull Map receiverValues ) { - return read(expression, resolvedCall, receiverValues); + return read(instructionElement, valueElement, resolvedCall, receiverValues); } @NotNull @Override public CallInstruction call( - @NotNull JetExpression expression, + @NotNull JetElement instructionElement, + @Nullable JetExpression valueElement, @NotNull ResolvedCall resolvedCall, @NotNull Map receiverValues, @NotNull Map arguments ) { JetType returnType = resolvedCall.getResultingDescriptor().getReturnType(); CallInstruction instruction = CallInstruction.object$.create( - expression, + instructionElement, + valueElement, getCurrentScope(), resolvedCall, receiverValues, @@ -516,19 +519,21 @@ public class JetControlFlowInstructionsGenerator extends JetControlFlowBuilderAd @NotNull private ReadValueInstruction read( + @NotNull JetElement instructionElement, @NotNull JetExpression expression, @Nullable ResolvedCall resolvedCall, @NotNull Map receiverValues) { AccessTarget accessTarget = resolvedCall != null ? new AccessTarget.Call(resolvedCall) : AccessTarget.BlackBox.instance$; - ReadValueInstruction instruction = - ReadValueInstruction.object$.create(expression, getCurrentScope(), accessTarget, receiverValues, valueFactory); + ReadValueInstruction instruction = ReadValueInstruction.object$.create( + instructionElement, expression, getCurrentScope(), accessTarget, receiverValues, valueFactory + ); add(instruction); return instruction; } @NotNull private ReadValueInstruction read(@NotNull JetExpression expression) { - return read(expression, null, Collections.emptyMap()); + return read(expression, expression, null, Collections.emptyMap()); } } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/eval/ReadValueInstruction.kt b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/eval/ReadValueInstruction.kt index 248f862eea5..4cb533a4ce8 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/eval/ReadValueInstruction.kt +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/eval/ReadValueInstruction.kt @@ -32,8 +32,8 @@ public class ReadValueInstruction private ( receiverValues: Map, private var _outputValue: PseudoValue? ) : AccessValueInstruction(element, lexicalScope, target, receiverValues), InstructionWithValue { - private fun newResultValue(factory: PseudoValueFactory) { - _outputValue = factory.newValue(element, this) + private fun newResultValue(factory: PseudoValueFactory, valueElement: JetElement) { + _outputValue = factory.newValue(valueElement, this) } override val inputValues: List @@ -61,13 +61,14 @@ public class ReadValueInstruction private ( class object { public fun create ( element: JetElement, + valueElement: JetElement, lexicalScope: LexicalScope, target: AccessTarget, receiverValues: Map, factory: PseudoValueFactory ): ReadValueInstruction { return ReadValueInstruction(element, lexicalScope, target, receiverValues, null).let { instruction -> - instruction.newResultValue(factory) + instruction.newResultValue(factory, valueElement) instruction } } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/eval/operationInstructions.kt b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/eval/operationInstructions.kt index a5d704c3da4..e9a220ed3cb 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/eval/operationInstructions.kt +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/eval/operationInstructions.kt @@ -82,13 +82,14 @@ public class CallInstruction private( class object { fun create ( element: JetElement, + valueElement: JetElement?, lexicalScope: LexicalScope, resolvedCall: ResolvedCall<*>, receiverValues: Map, arguments: Map, factory: PseudoValueFactory? ): CallInstruction = - CallInstruction(element, lexicalScope, resolvedCall, receiverValues, arguments).setResult(factory) as CallInstruction + CallInstruction(element, lexicalScope, resolvedCall, receiverValues, arguments).setResult(factory, valueElement) as CallInstruction } } @@ -106,10 +107,6 @@ public class MagicInstruction( inputValues: List, val expectedTypes: Map ) : OperationInstruction(element, lexicalScope, inputValues), StrictlyValuedOperationInstruction { - protected fun setResult(valueElement: JetElement?, factory: PseudoValueFactory?): OperationInstruction { - return setResult(factory?.newValue(valueElement, this)) - } - override fun accept(visitor: InstructionVisitor) { visitor.visitMagic(this) } diff --git a/compiler/testData/cfg-variables/basic/IfWithUninitialized.values b/compiler/testData/cfg-variables/basic/IfWithUninitialized.values index e6daa6655db..886eac6e86c 100644 --- a/compiler/testData/cfg-variables/basic/IfWithUninitialized.values +++ b/compiler/testData/cfg-variables/basic/IfWithUninitialized.values @@ -10,12 +10,10 @@ fun foo() { } --------------------- 1 NEW() -< NEW(, ) -2 NEW() -1 < 2 COPY -use NEW() +2 NEW() +1 < 2 NEW(, ) b NEW() -use(b) COPY +use(b) NEW() { use(b) } COPY true NEW() if (1 < 2) { use(b) } else { b = true } COPY diff --git a/compiler/testData/cfg-variables/basic/UsageInFunctionLiteral.values b/compiler/testData/cfg-variables/basic/UsageInFunctionLiteral.values index e904d6ab89e..c7195b6fb36 100644 --- a/compiler/testData/cfg-variables/basic/UsageInFunctionLiteral.values +++ b/compiler/testData/cfg-variables/basic/UsageInFunctionLiteral.values @@ -17,12 +17,10 @@ fun foo() { } --------------------- x NEW() -+ NEW(, ) -a NEW() -x + a COPY -use NEW() +a NEW() +x + a NEW(, ) a NEW() -use(a) COPY +use(a) NEW() val y = x + a use(a) COPY ===================== == use == diff --git a/compiler/testData/cfg-variables/basic/VariablesUsage.values b/compiler/testData/cfg-variables/basic/VariablesUsage.values index 3882cde42ce..f9713ca80ce 100644 --- a/compiler/testData/cfg-variables/basic/VariablesUsage.values +++ b/compiler/testData/cfg-variables/basic/VariablesUsage.values @@ -7,13 +7,11 @@ fun foo() { } --------------------- 1 NEW() -use NEW() -a NEW() -use(a) COPY +a NEW() +use(a) NEW() 2 NEW() -use NEW() -a NEW() -use(a) COPY +a NEW() +use(a) NEW() { var a = 1 use(a) a = 2 use(a) } COPY ===================== == bar == diff --git a/compiler/testData/cfg-variables/bugs/referenceToPropertyInitializer.values b/compiler/testData/cfg-variables/bugs/referenceToPropertyInitializer.values index 7a620f24e85..45d05ab3d65 100644 --- a/compiler/testData/cfg-variables/bugs/referenceToPropertyInitializer.values +++ b/compiler/testData/cfg-variables/bugs/referenceToPropertyInitializer.values @@ -12,16 +12,14 @@ class TestFunctionLiteral { sum(x - 1) + x } --------------------- -sum NEW(, ) +sum NEW() x NEW() -- NEW(, ) -1 NEW() -x - 1 COPY -sum(x - 1) COPY -+ NEW(, ) +1 NEW() +x - 1 NEW(, ) +sum(x - 1) NEW(, ) x NEW() -sum(x - 1) + x COPY -sum(x - 1) + x COPY +sum(x - 1) + x NEW(, ) +sum(x - 1) + x COPY ===================== == A == open class A(val a: A) @@ -56,7 +54,6 @@ class TestOther { } --------------------- x NEW() -+ NEW(, ) -1 NEW() -x + 1 COPY +1 NEW() +x + 1 NEW(, ) ===================== diff --git a/compiler/testData/cfg-variables/bugs/varInitializationInIf.instructions b/compiler/testData/cfg-variables/bugs/varInitializationInIf.instructions index 4254efd5127..96d9c9a1284 100644 --- a/compiler/testData/cfg-variables/bugs/varInitializationInIf.instructions +++ b/compiler/testData/cfg-variables/bugs/varInitializationInIf.instructions @@ -33,7 +33,7 @@ L3: error(use, No resolved call) USE: in: {b=READ} out: {b=READ} r(b) -> USE: in: {} out: {b=READ} error(use, No resolved call) - magic(use|) -> + magic(use(b)|) -> L1: 1 INIT: in: {} out: {} error: diff --git a/compiler/testData/cfg-variables/bugs/varInitializationInIf.values b/compiler/testData/cfg-variables/bugs/varInitializationInIf.values index 4a868cca85f..d87c23dbb1c 100644 --- a/compiler/testData/cfg-variables/bugs/varInitializationInIf.values +++ b/compiler/testData/cfg-variables/bugs/varInitializationInIf.values @@ -10,14 +10,12 @@ fun foo() { use(b) } --------------------- -1 NEW() -< NEW(, ) -2 NEW() -1 < 2 COPY -false NEW() -true NEW() -use NEW() -b NEW() -use(b) COPY +1 NEW() +2 NEW() +1 < 2 NEW(, ) +false NEW() +true NEW() +b NEW() +use(b) NEW() { val b: Boolean if (1 < 2) { b = false } else { b = true } use(b) } COPY ===================== diff --git a/compiler/testData/cfg-variables/bugs/varInitializationInIfInCycle.values b/compiler/testData/cfg-variables/bugs/varInitializationInIfInCycle.values index 84f88ed4a43..5719f3b7cfe 100644 --- a/compiler/testData/cfg-variables/bugs/varInitializationInIfInCycle.values +++ b/compiler/testData/cfg-variables/bugs/varInitializationInIfInCycle.values @@ -15,14 +15,12 @@ fun foo(numbers: Collection) { --------------------- numbers NEW() 1 NEW() -< NEW(, ) 2 NEW() -1 < 2 COPY +1 < 2 NEW(, ) false NEW() true NEW() -use NEW() b NEW() -use(b) COPY +use(b) NEW() ===================== == use == fun use(vararg a: Any?) = a diff --git a/compiler/testData/cfg-variables/lexicalScopes/doWhileScope.values b/compiler/testData/cfg-variables/lexicalScopes/doWhileScope.values index 98eff65562e..6168d89842d 100644 --- a/compiler/testData/cfg-variables/lexicalScopes/doWhileScope.values +++ b/compiler/testData/cfg-variables/lexicalScopes/doWhileScope.values @@ -10,9 +10,8 @@ fun foo() { "before" NEW() 2 NEW() a NEW() -> NEW(, ) -0 NEW() -a > 0 COPY +0 NEW() +a > 0 NEW(, ) "after" NEW() { "before" do { var a = 2 } while (a > 0) "after" } COPY ===================== diff --git a/compiler/testData/cfg-variables/lexicalScopes/forScope.values b/compiler/testData/cfg-variables/lexicalScopes/forScope.values index b71c3152de6..a48bf428fda 100644 --- a/compiler/testData/cfg-variables/lexicalScopes/forScope.values +++ b/compiler/testData/cfg-variables/lexicalScopes/forScope.values @@ -9,9 +9,8 @@ fun foo() { --------------------- "before" NEW() 1 NEW() -.. NEW(, ) -10 NEW() -1..10 COPY +10 NEW() +1..10 NEW(, ) i NEW() "after" NEW() { "before" for (i in 1..10) { val a = i } "after" } COPY diff --git a/compiler/testData/cfg-variables/lexicalScopes/functionLiteralScope.values b/compiler/testData/cfg-variables/lexicalScopes/functionLiteralScope.values index 10e8faf963a..5f8baa9bc50 100644 --- a/compiler/testData/cfg-variables/lexicalScopes/functionLiteralScope.values +++ b/compiler/testData/cfg-variables/lexicalScopes/functionLiteralScope.values @@ -20,7 +20,6 @@ fun foo() { } --------------------- x NEW() -+ NEW(, ) b NEW() -x + b COPY +x + b NEW(, ) ===================== diff --git a/compiler/testData/cfg-variables/lexicalScopes/localFunctionScope.values b/compiler/testData/cfg-variables/lexicalScopes/localFunctionScope.values index bd4aac4f811..d995e457ecb 100644 --- a/compiler/testData/cfg-variables/lexicalScopes/localFunctionScope.values +++ b/compiler/testData/cfg-variables/lexicalScopes/localFunctionScope.values @@ -19,7 +19,6 @@ fun local(x: Int) { } --------------------- x NEW() -+ NEW(, ) b NEW() -x + b COPY +x + b NEW(, ) ===================== diff --git a/compiler/testData/cfg-variables/lexicalScopes/localFunctionScopeWithoutBody.values b/compiler/testData/cfg-variables/lexicalScopes/localFunctionScopeWithoutBody.values index 59399b76c4a..75d4a6fd6dc 100644 --- a/compiler/testData/cfg-variables/lexicalScopes/localFunctionScopeWithoutBody.values +++ b/compiler/testData/cfg-variables/lexicalScopes/localFunctionScopeWithoutBody.values @@ -15,7 +15,6 @@ fun foo() { fun local(x: Int) = x + b --------------------- x NEW() -+ NEW(, ) b NEW() -x + b COPY +x + b NEW(, ) ===================== diff --git a/compiler/testData/cfg-variables/lexicalScopes/tryScope.values b/compiler/testData/cfg-variables/lexicalScopes/tryScope.values index 018cd518e40..03919986b84 100644 --- a/compiler/testData/cfg-variables/lexicalScopes/tryScope.values +++ b/compiler/testData/cfg-variables/lexicalScopes/tryScope.values @@ -14,9 +14,8 @@ fun foo() { } --------------------- "before" NEW() -foo NEW() -foo() COPY -{ foo() } COPY +foo() NEW() +{ foo() } COPY e NEW() 1 NEW() try { foo() } catch (e: Exception) { val a = e } finally { val a = 1 } COPY diff --git a/compiler/testData/cfg/arrays/ArrayAccess.values b/compiler/testData/cfg/arrays/ArrayAccess.values index be36a822660..bc136e3fe81 100644 --- a/compiler/testData/cfg/arrays/ArrayAccess.values +++ b/compiler/testData/cfg/arrays/ArrayAccess.values @@ -9,8 +9,7 @@ fun foo() { a[10] += 1 } --------------------- -Array NEW() -Array COPY +Array NEW() 3 NEW() a NEW() 10 NEW() @@ -24,8 +23,7 @@ a[10] NEW(, NEW() 10 NEW() a[10] NEW(, ) -+= NEW(, ) -1 NEW() +1 NEW() a[10] += 1 NEW(, , ) { val a = Array 3 a[10] = 4 2 a[10] 100 a[10] += 1 } COPY ===================== diff --git a/compiler/testData/cfg/arrays/ArrayOfFunctions.values b/compiler/testData/cfg/arrays/ArrayOfFunctions.values index 0ffffeb1c4e..789e1185393 100644 --- a/compiler/testData/cfg/arrays/ArrayOfFunctions.values +++ b/compiler/testData/cfg/arrays/ArrayOfFunctions.values @@ -5,8 +5,8 @@ fun test(array: Array<(Int)->Unit>) { --------------------- array NEW() 11 NEW() -array[11] NEW(, ) +array[11] NEW(, ) 3 NEW() -array[11](3) COPY +array[11](3) NEW(, ) { array[11](3) } COPY ===================== diff --git a/compiler/testData/cfg/arrays/arrayAccessExpression.values b/compiler/testData/cfg/arrays/arrayAccessExpression.values index 0335aaa2dae..fee89dd84b8 100644 --- a/compiler/testData/cfg/arrays/arrayAccessExpression.values +++ b/compiler/testData/cfg/arrays/arrayAccessExpression.values @@ -14,9 +14,8 @@ fun test(ab: Ab) { } --------------------- ab NEW() -getArray NEW() -getArray() COPY -ab.getArray() COPY +getArray() NEW() +ab.getArray() COPY 1 NEW() ab.getArray()[1] NEW(, ) { ab.getArray()[1] } COPY diff --git a/compiler/testData/cfg/arrays/arrayInc.values b/compiler/testData/cfg/arrays/arrayInc.values index 542818d8993..6f116496e1d 100644 --- a/compiler/testData/cfg/arrays/arrayInc.values +++ b/compiler/testData/cfg/arrays/arrayInc.values @@ -6,7 +6,6 @@ fun foo(a: Array) { a NEW() 0 NEW() a[0] NEW(, ) -++ NEW() a[0]++ NEW(, , ) { a[0]++ } COPY ===================== diff --git a/compiler/testData/cfg/arrays/arraySetPlusAssign.values b/compiler/testData/cfg/arrays/arraySetPlusAssign.values index 43e25c717e8..bd6d86ed9b6 100644 --- a/compiler/testData/cfg/arrays/arraySetPlusAssign.values +++ b/compiler/testData/cfg/arrays/arraySetPlusAssign.values @@ -6,8 +6,7 @@ fun foo(a: Array) { a NEW() 0 NEW() a[0] NEW(, ) -+= NEW(, ) -1 NEW() +1 NEW() a[0] += 1 NEW(, , ) { a[0] += 1 } COPY ===================== diff --git a/compiler/testData/cfg/basic/Basic.values b/compiler/testData/cfg/basic/Basic.values index 8c7a13ea445..979de60120b 100644 --- a/compiler/testData/cfg/basic/Basic.values +++ b/compiler/testData/cfg/basic/Basic.values @@ -20,31 +20,24 @@ fun f(a : Boolean) : Unit { 1 NEW() a NEW() 2 NEW() -toLong NEW() -toLong() COPY -2.toLong() COPY -foo NEW(, ) -a NEW() +toLong() NEW() +2.toLong() COPY +a NEW() 3 NEW() -foo(a, 3) COPY -genfun NEW() -genfun() COPY -flfun NEW() +foo(a, 3) NEW(, ) +genfun() NEW() {1} NEW() -flfun {1} COPY +flfun {1} NEW() 3 NEW() -equals NEW(, ) -4 NEW() -equals(4) COPY +4 NEW() +equals(4) NEW(, ) 3.equals(4) COPY 3 NEW() -equals NEW(, ) -4 NEW() -3 equals 4 COPY +4 NEW() +3 equals 4 NEW(, ) 1 NEW() -+ NEW(, ) -2 NEW() -1 + 2 COPY +2 NEW() +1 + 2 NEW(, ) a NEW() true NEW() a && true NEW(, ) diff --git a/compiler/testData/cfg/controlStructures/Finally.values b/compiler/testData/cfg/controlStructures/Finally.values index 938ca6510df..d6ffe48bae5 100644 --- a/compiler/testData/cfg/controlStructures/Finally.values +++ b/compiler/testData/cfg/controlStructures/Finally.values @@ -28,9 +28,8 @@ fun t2() { --------------------- 1 NEW() 2 NEW() -> NEW(, ) -3 NEW() -2 > 3 COPY +3 NEW() +2 > 3 NEW(, ) 2 NEW() { 2 } COPY ===================== @@ -65,9 +64,8 @@ try { 1 @l{ () -> if (2 > 3) { return@l } } } finally { 2 } COPY } --------------------- 2 NEW() -> NEW(, ) -3 NEW() -2 > 3 COPY +3 NEW() +2 > 3 NEW(, ) ===================== == t4 == fun t4() { @@ -101,9 +99,8 @@ fun t4() { --------------------- 1 NEW() 2 NEW() -> NEW(, ) -3 NEW() -2 > 3 COPY +3 NEW() +2 > 3 NEW(, ) 2 NEW() { 2 } COPY ===================== @@ -124,9 +121,8 @@ fun t5() { true NEW() 1 NEW() 2 NEW() -> NEW(, ) -3 NEW() -2 > 3 COPY +3 NEW() +2 > 3 NEW(, ) 2 NEW() { 2 } COPY ===================== @@ -148,9 +144,8 @@ fun t6() { true NEW() 1 NEW() 2 NEW() -> NEW(, ) -3 NEW() -2 > 3 COPY +3 NEW() +2 > 3 NEW(, ) 5 NEW() { @l while(true) { 1 if (2 > 3) { break @l } } 5 } COPY 2 NEW() @@ -175,9 +170,8 @@ fun t7() { true NEW() 1 NEW() 2 NEW() -> NEW(, ) -3 NEW() -2 > 3 COPY +3 NEW() +2 > 3 NEW(, ) 2 NEW() { 2 } COPY ===================== @@ -196,14 +190,12 @@ fun t8(a : Int) { } --------------------- 1 NEW() -.. NEW(, ) a NEW() -1..a COPY +1..a NEW(, ) 1 NEW() 2 NEW() -> NEW(, ) 3 NEW() -2 > 3 COPY +2 > 3 NEW(, ) 2 NEW() { 2 } COPY ===================== @@ -223,14 +215,12 @@ fun t9(a : Int) { } --------------------- 1 NEW() -.. NEW(, ) -a NEW() -1..a COPY +a NEW() +1..a NEW(, ) 1 NEW() 2 NEW() -> NEW(, ) -3 NEW() -2 > 3 COPY +3 NEW() +2 > 3 NEW(, ) 5 NEW() { @l for (i in 1..a) { 1 if (2 > 3) { continue @l } } 5 } COPY 2 NEW() @@ -253,14 +243,12 @@ fun t10(a : Int) { } --------------------- 1 NEW() -.. NEW(, ) a NEW() -1..a COPY +1..a NEW(, ) 1 NEW() 2 NEW() -> NEW(, ) 3 NEW() -2 > 3 COPY +2 > 3 NEW(, ) 2 NEW() { 2 } COPY ===================== @@ -288,9 +276,8 @@ fun t12() : Int { } --------------------- 1 NEW() -doSmth NEW() -3 NEW() -doSmth(3) COPY +3 NEW() +doSmth(3) NEW() { doSmth(3) } COPY ===================== == t13 == @@ -307,13 +294,11 @@ fun t13() : Int { } --------------------- 1 NEW() -doSmth NEW() -2 NEW() -doSmth(2) COPY +2 NEW() +doSmth(2) NEW() { doSmth(2) } COPY -doSmth NEW() -3 NEW() -doSmth(3) COPY +3 NEW() +doSmth(3) NEW() { doSmth(3) } COPY try { return 1 } catch (e: UnsupportedOperationException) { doSmth(2) } finally { doSmth(3) } COPY { try { return 1 } catch (e: UnsupportedOperationException) { doSmth(2) } finally { doSmth(3) } } COPY @@ -329,9 +314,8 @@ fun t14() : Int { } --------------------- 1 NEW() -doSmth NEW() -2 NEW() -doSmth(2) COPY +2 NEW() +doSmth(2) NEW() { doSmth(2) } COPY try { return 1 } catch (e: UnsupportedOperationException) { doSmth(2) } COPY { try { return 1 } catch (e: UnsupportedOperationException) { doSmth(2) } } COPY @@ -351,9 +335,8 @@ fun t15() : Int { --------------------- 1 NEW() 2 NEW() -doSmth NEW() 3 NEW() -doSmth(3) COPY +doSmth(3) NEW() { doSmth(3) } COPY ===================== == t16 == @@ -369,14 +352,12 @@ fun t16() : Int { } } --------------------- -doSmth NEW() -1 NEW() -doSmth(1) COPY +1 NEW() +doSmth(1) NEW() { doSmth(1) } COPY 2 NEW() -doSmth NEW() -3 NEW() -doSmth(3) COPY +3 NEW() +doSmth(3) NEW() { doSmth(3) } COPY try { doSmth(1) } catch (e: UnsupportedOperationException) { return 2 } finally { doSmth(3) } COPY { try { doSmth(1) } catch (e: UnsupportedOperationException) { return 2 } finally { doSmth(3) } } COPY diff --git a/compiler/testData/cfg/controlStructures/FinallyTestCopy.values b/compiler/testData/cfg/controlStructures/FinallyTestCopy.values index 090cc3cfe00..9a622cdbac2 100644 --- a/compiler/testData/cfg/controlStructures/FinallyTestCopy.values +++ b/compiler/testData/cfg/controlStructures/FinallyTestCopy.values @@ -30,15 +30,12 @@ fun testCopy1() : Int { } } --------------------- -doSmth NEW() -doSmth() COPY -{ doSmth() } COPY -doSmth1 NEW() -doSmth1() COPY -{ doSmth1() } COPY -doSmth2 NEW() -doSmth2() COPY -{ doSmth2() } COPY +doSmth() NEW() +{ doSmth() } COPY +doSmth1() NEW() +{ doSmth1() } COPY +doSmth2() NEW() +{ doSmth2() } COPY 1 NEW() try { doSmth() } catch (e: NullPointerException) { doSmth1() } catch (e: Exception) { doSmth2() } finally { return 1 } NEW(, , ) { try { doSmth() } catch (e: NullPointerException) { doSmth1() } catch (e: Exception) { doSmth2() } finally { return 1 } } COPY @@ -62,19 +59,14 @@ fun testCopy2() { } } --------------------- -cond NEW() -cond() COPY -doSmth NEW() -doSmth() COPY -{ doSmth() } COPY -doSmth1 NEW() -doSmth1() COPY -{ doSmth1() } COPY -doSmth2 NEW() -doSmth2() COPY -{ doSmth2() } COPY -cond NEW() -cond() COPY +cond() NEW() +doSmth() NEW() +{ doSmth() } COPY +doSmth1() NEW() +{ doSmth1() } COPY +doSmth2() NEW() +{ doSmth2() } COPY +cond() NEW() try { doSmth() } catch (e: NullPointerException) { doSmth1() } catch (e: Exception) { doSmth2() } finally { if (cond()) return else continue } NEW(, , ) { try { doSmth() } catch (e: NullPointerException) { doSmth1() } catch (e: Exception) { doSmth2() } finally { if (cond()) return else continue } } COPY ===================== @@ -94,17 +86,13 @@ fun testCopy3() { } } --------------------- -doSmth NEW() -doSmth() COPY -{ doSmth() } COPY -doSmth1 NEW() -doSmth1() COPY -{ doSmth1() } COPY -doSmth2 NEW() -doSmth2() COPY -{ doSmth2() } COPY -cond NEW() -cond() COPY +doSmth() NEW() +{ doSmth() } COPY +doSmth1() NEW() +{ doSmth1() } COPY +doSmth2() NEW() +{ doSmth2() } COPY +cond() NEW() try { doSmth() } catch (e: NullPointerException) { doSmth1() } catch (e: Exception) { doSmth2() } finally { while (cond()); } NEW(, , ) { try { doSmth() } catch (e: NullPointerException) { doSmth1() } catch (e: Exception) { doSmth2() } finally { while (cond()); } } COPY ===================== @@ -119,13 +107,11 @@ fun doTestCopy4(list: List?) : Int { } } --------------------- -doSmth NEW() -doSmth() COPY -{ doSmth() } COPY +doSmth() NEW() +{ doSmth() } COPY list NEW() -!= NEW(, ) -null NEW() -list != null COPY +null NEW() +list != null NEW(, ) try { doSmth() } finally { if(list != null) { } } COPY { try { doSmth() } finally { if(list != null) { } } } COPY ===================== diff --git a/compiler/testData/cfg/controlStructures/For.values b/compiler/testData/cfg/controlStructures/For.values index 296b717639f..c7b2ce12294 100644 --- a/compiler/testData/cfg/controlStructures/For.values +++ b/compiler/testData/cfg/controlStructures/For.values @@ -6,12 +6,10 @@ fun t1() { } --------------------- 1 NEW() -.. NEW(, ) -2 NEW() -1..2 COPY -doSmth NEW() +2 NEW() +1..2 NEW(, ) i NEW() -doSmth(i) COPY +doSmth(i) NEW() { doSmth(i) } COPY ===================== == doSmth == diff --git a/compiler/testData/cfg/controlStructures/If.values b/compiler/testData/cfg/controlStructures/If.values index 32c89342ba6..f0055a9467d 100644 --- a/compiler/testData/cfg/controlStructures/If.values +++ b/compiler/testData/cfg/controlStructures/If.values @@ -18,15 +18,13 @@ fun t1(b: Boolean) { --------------------- b NEW() "s" NEW() -doSmth NEW() -u NEW() -doSmth(u) COPY +u NEW() +doSmth(u) NEW() b NEW() "s" NEW() "t" NEW() -doSmth NEW() -r NEW() -doSmth(r) COPY +r NEW() +doSmth(r) NEW() { var u: String if (b) { u = "s" } doSmth(u) var r: String if (b) { r = "s" } else { r = "t" } doSmth(r) } COPY ===================== == t2 == @@ -43,9 +41,8 @@ fun t2(b: Boolean) { --------------------- 3 NEW() b NEW() -doSmth NEW() i NEW() -doSmth(i) COPY +doSmth(i) NEW() i NEW() i is Int NEW() ===================== diff --git a/compiler/testData/cfg/controlStructures/OnlyWhileInFunctionBody.values b/compiler/testData/cfg/controlStructures/OnlyWhileInFunctionBody.values index 91e07f3a580..b01dad9a5e4 100644 --- a/compiler/testData/cfg/controlStructures/OnlyWhileInFunctionBody.values +++ b/compiler/testData/cfg/controlStructures/OnlyWhileInFunctionBody.values @@ -6,9 +6,8 @@ fun main() { } --------------------- 0 NEW() -> NEW(, ) -1 NEW() -0 > 1 COPY +1 NEW() +0 > 1 NEW(, ) 2 NEW() { 2 } COPY ===================== @@ -19,7 +18,6 @@ fun dowhile() { } --------------------- 0 NEW() -> NEW(, ) -1 NEW() -0 > 1 COPY +1 NEW() +0 > 1 NEW(, ) ===================== diff --git a/compiler/testData/cfg/conventions/equals.values b/compiler/testData/cfg/conventions/equals.values index ecaef0eeb99..fde14f3d634 100644 --- a/compiler/testData/cfg/conventions/equals.values +++ b/compiler/testData/cfg/conventions/equals.values @@ -5,7 +5,6 @@ fun foo(a: Int, b: Int) { } --------------------- a NEW() -== NEW(, ) -b NEW() -a == b COPY +b NEW() +a == b NEW(, ) ===================== diff --git a/compiler/testData/cfg/conventions/incrementAtTheEnd.values b/compiler/testData/cfg/conventions/incrementAtTheEnd.values index 870bd86bae5..708871cea55 100644 --- a/compiler/testData/cfg/conventions/incrementAtTheEnd.values +++ b/compiler/testData/cfg/conventions/incrementAtTheEnd.values @@ -4,7 +4,6 @@ fun foo() { i++ } --------------------- -1 NEW() -i NEW() -++ NEW() +1 NEW() +i NEW() ===================== diff --git a/compiler/testData/cfg/conventions/invoke.values b/compiler/testData/cfg/conventions/invoke.values index 14de48d8f70..448531f5c64 100644 --- a/compiler/testData/cfg/conventions/invoke.values +++ b/compiler/testData/cfg/conventions/invoke.values @@ -3,7 +3,7 @@ fun foo(f: () -> Unit) { f() } --------------------- -f NEW() -f() COPY +f NEW() +f() NEW() { f() } COPY ===================== diff --git a/compiler/testData/cfg/conventions/notEqual.values b/compiler/testData/cfg/conventions/notEqual.values index c57f4cafadf..0ec5fe6e8a7 100644 --- a/compiler/testData/cfg/conventions/notEqual.values +++ b/compiler/testData/cfg/conventions/notEqual.values @@ -4,7 +4,6 @@ fun neq(a: Int, b: Int) { } --------------------- a NEW() -!= NEW(, ) -b NEW() -a != b COPY +b NEW() +a != b NEW(, ) ===================== diff --git a/compiler/testData/cfg/deadCode/DeadCode.values b/compiler/testData/cfg/deadCode/DeadCode.values index 20de98dc3e3..994dd1d105f 100644 --- a/compiler/testData/cfg/deadCode/DeadCode.values +++ b/compiler/testData/cfg/deadCode/DeadCode.values @@ -4,9 +4,7 @@ fun test() { test() } --------------------- -Exception NEW() -Exception() COPY -test NEW() -test() COPY -{ throw Exception() test() } COPY +Exception() NEW() +test() NEW() +{ throw Exception() test() } COPY ===================== diff --git a/compiler/testData/cfg/deadCode/stringTemplate.values b/compiler/testData/cfg/deadCode/stringTemplate.values index c563baf9aa5..b4c1c1b7c16 100644 --- a/compiler/testData/cfg/deadCode/stringTemplate.values +++ b/compiler/testData/cfg/deadCode/stringTemplate.values @@ -3,9 +3,8 @@ fun test() { "${throw Exception()} ${1}" } --------------------- -Exception NEW() -Exception() COPY -1 NEW() +Exception() NEW() +1 NEW() "${throw Exception()} ${1}" NEW() { "${throw Exception()} ${1}" } COPY ===================== diff --git a/compiler/testData/cfg/declarations/functions/FailFunction.values b/compiler/testData/cfg/declarations/functions/FailFunction.values index e02d5af311f..062ee86dcf5 100644 --- a/compiler/testData/cfg/declarations/functions/FailFunction.values +++ b/compiler/testData/cfg/declarations/functions/FailFunction.values @@ -3,7 +3,6 @@ fun fail() : Nothing { throw java.lang.RuntimeException() } --------------------- -RuntimeException NEW() -RuntimeException() COPY -java.lang.RuntimeException() COPY +RuntimeException() NEW() +java.lang.RuntimeException() COPY ===================== diff --git a/compiler/testData/cfg/declarations/local/ObjectExpression.values b/compiler/testData/cfg/declarations/local/ObjectExpression.values index 25285525c34..deaf3419903 100644 --- a/compiler/testData/cfg/declarations/local/ObjectExpression.values +++ b/compiler/testData/cfg/declarations/local/ObjectExpression.values @@ -28,7 +28,6 @@ fun foo(b: B) : Int { b NEW() object : A by b {} NEW() o NEW() -foo NEW() -foo() COPY -o.foo() COPY +foo() NEW() +o.foo() COPY ===================== diff --git a/compiler/testData/cfg/declarations/properties/DelegatedProperty.values b/compiler/testData/cfg/declarations/properties/DelegatedProperty.values index e8db517d485..0cb0fefa23e 100644 --- a/compiler/testData/cfg/declarations/properties/DelegatedProperty.values +++ b/compiler/testData/cfg/declarations/properties/DelegatedProperty.values @@ -12,8 +12,7 @@ fun get(_this: Any, p: PropertyMetadata): Int = 0 == a == val a = Delegate() --------------------- -Delegate NEW() -Delegate() COPY +Delegate() NEW() ===================== == b == val b by a diff --git a/compiler/testData/cfg/declarations/properties/backingFieldQualifiedWithThis.values b/compiler/testData/cfg/declarations/properties/backingFieldQualifiedWithThis.values index 4bb84a69d5b..21072d45bf9 100644 --- a/compiler/testData/cfg/declarations/properties/backingFieldQualifiedWithThis.values +++ b/compiler/testData/cfg/declarations/properties/backingFieldQualifiedWithThis.values @@ -9,9 +9,8 @@ abstract class Bar { fun foo() = "foo" + this.$bar --------------------- "foo" NEW() -+ NEW(, ) -this NEW() +this NEW() $bar NEW() this.$bar COPY -"foo" + this.$bar COPY +"foo" + this.$bar NEW(, ) ===================== diff --git a/compiler/testData/cfg/expressions/Assignments.values b/compiler/testData/cfg/expressions/Assignments.values index 49eb7dc3652..3e151ef8ae2 100644 --- a/compiler/testData/cfg/expressions/Assignments.values +++ b/compiler/testData/cfg/expressions/Assignments.values @@ -23,8 +23,7 @@ fun assignments() : Unit { 1 NEW() 2 NEW() x NEW() -+= NEW(, ) -2 NEW() +2 NEW() true NEW() 1 NEW() 2 NEW() @@ -35,13 +34,11 @@ true && false NEW(, ) false NEW() true NEW() false && true NEW(, ) -Test NEW() -Test() COPY -t NEW() +Test() NEW() +t NEW() 1 NEW() t NEW() x NEW() t.x COPY -+= NEW(, ) -1 NEW() +1 NEW() ===================== diff --git a/compiler/testData/cfg/expressions/chainedQualifiedExpression.values b/compiler/testData/cfg/expressions/chainedQualifiedExpression.values index 2eff8901890..1b173b29e67 100644 --- a/compiler/testData/cfg/expressions/chainedQualifiedExpression.values +++ b/compiler/testData/cfg/expressions/chainedQualifiedExpression.values @@ -51,165 +51,140 @@ public open class JetKeywordCompletionContributor() { } --------------------- 1.0 NEW() -BunchKeywordRegister NEW() -BunchKeywordRegister() COPY -add NEW(, , , , ) -ABSTRACT_KEYWORD NEW() +BunchKeywordRegister() NEW() +ABSTRACT_KEYWORD NEW() inTopLevel NEW() inTopLevel NEW() inTopLevel NEW() -add(ABSTRACT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) COPY +add(ABSTRACT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) NEW(, , , , ) BunchKeywordRegister() .add(ABSTRACT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) COPY -add NEW(, , , , ) -FINAL_KEYWORD NEW() +FINAL_KEYWORD NEW() inTopLevel NEW() inTopLevel NEW() inTopLevel NEW() -add(FINAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) COPY +add(FINAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) NEW(, , , , ) BunchKeywordRegister() .add(ABSTRACT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FINAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) COPY -add NEW(, , , , ) -OPEN_KEYWORD NEW() +OPEN_KEYWORD NEW() inTopLevel NEW() inTopLevel NEW() inTopLevel NEW() -add(OPEN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) COPY +add(OPEN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) NEW(, , , , ) BunchKeywordRegister() .add(ABSTRACT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FINAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(OPEN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) COPY -add NEW(, , , , , ) -INTERNAL_KEYWORD NEW() +INTERNAL_KEYWORD NEW() inTopLevel NEW() inTopLevel NEW() inTopLevel NEW() inTopLevel NEW() -add(INTERNAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) COPY +add(INTERNAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) NEW(, , , , , ) BunchKeywordRegister() .add(ABSTRACT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FINAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(OPEN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(INTERNAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) COPY -add NEW(, , , , , ) -PRIVATE_KEYWORD NEW() +PRIVATE_KEYWORD NEW() inTopLevel NEW() inTopLevel NEW() inTopLevel NEW() inTopLevel NEW() -add(PRIVATE_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) COPY +add(PRIVATE_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) NEW(, , , , , ) BunchKeywordRegister() .add(ABSTRACT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FINAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(OPEN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(INTERNAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PRIVATE_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) COPY -add NEW(, , , , , ) -PROTECTED_KEYWORD NEW() +PROTECTED_KEYWORD NEW() inTopLevel NEW() inTopLevel NEW() inTopLevel NEW() inTopLevel NEW() -add(PROTECTED_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) COPY +add(PROTECTED_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) NEW(, , , , , ) BunchKeywordRegister() .add(ABSTRACT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FINAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(OPEN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(INTERNAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PRIVATE_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PROTECTED_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) COPY -add NEW(, , , , , ) -PUBLIC_KEYWORD NEW() +PUBLIC_KEYWORD NEW() inTopLevel NEW() inTopLevel NEW() inTopLevel NEW() inTopLevel NEW() -add(PUBLIC_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) COPY +add(PUBLIC_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) NEW(, , , , , ) BunchKeywordRegister() .add(ABSTRACT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FINAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(OPEN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(INTERNAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PRIVATE_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PROTECTED_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PUBLIC_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) COPY -add NEW(, , , , ) -CLASS_KEYWORD NEW() +CLASS_KEYWORD NEW() inTopLevel NEW() inTopLevel NEW() inTopLevel NEW() -add(CLASS_KEYWORD, inTopLevel, inTopLevel, inTopLevel) COPY +add(CLASS_KEYWORD, inTopLevel, inTopLevel, inTopLevel) NEW(, , , , ) BunchKeywordRegister() .add(ABSTRACT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FINAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(OPEN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(INTERNAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PRIVATE_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PROTECTED_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PUBLIC_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(CLASS_KEYWORD, inTopLevel, inTopLevel, inTopLevel) COPY -add NEW(, , , , ) -ENUM_KEYWORD NEW() +ENUM_KEYWORD NEW() inTopLevel NEW() inTopLevel NEW() inTopLevel NEW() -add(ENUM_KEYWORD, inTopLevel, inTopLevel, inTopLevel) COPY +add(ENUM_KEYWORD, inTopLevel, inTopLevel, inTopLevel) NEW(, , , , ) BunchKeywordRegister() .add(ABSTRACT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FINAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(OPEN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(INTERNAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PRIVATE_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PROTECTED_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PUBLIC_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(CLASS_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(ENUM_KEYWORD, inTopLevel, inTopLevel, inTopLevel) COPY -add NEW(, , , , ) -FUN_KEYWORD NEW() +FUN_KEYWORD NEW() inTopLevel NEW() inTopLevel NEW() inTopLevel NEW() -add(FUN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) COPY +add(FUN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) NEW(, , , , ) BunchKeywordRegister() .add(ABSTRACT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FINAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(OPEN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(INTERNAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PRIVATE_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PROTECTED_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PUBLIC_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(CLASS_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(ENUM_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FUN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) COPY -add NEW(, , , , ) -GET_KEYWORD NEW() +GET_KEYWORD NEW() inTopLevel NEW() inTopLevel NEW() inTopLevel NEW() -add(GET_KEYWORD, inTopLevel, inTopLevel, inTopLevel) COPY +add(GET_KEYWORD, inTopLevel, inTopLevel, inTopLevel) NEW(, , , , ) BunchKeywordRegister() .add(ABSTRACT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FINAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(OPEN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(INTERNAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PRIVATE_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PROTECTED_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PUBLIC_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(CLASS_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(ENUM_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FUN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(GET_KEYWORD, inTopLevel, inTopLevel, inTopLevel) COPY -add NEW(, , , , ) -SET_KEYWORD NEW() +SET_KEYWORD NEW() inTopLevel NEW() inTopLevel NEW() inTopLevel NEW() -add(SET_KEYWORD, inTopLevel, inTopLevel, inTopLevel) COPY +add(SET_KEYWORD, inTopLevel, inTopLevel, inTopLevel) NEW(, , , , ) BunchKeywordRegister() .add(ABSTRACT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FINAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(OPEN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(INTERNAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PRIVATE_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PROTECTED_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PUBLIC_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(CLASS_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(ENUM_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FUN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(GET_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(SET_KEYWORD, inTopLevel, inTopLevel, inTopLevel) COPY -add NEW(, , , , ) -TRAIT_KEYWORD NEW() +TRAIT_KEYWORD NEW() inTopLevel NEW() inTopLevel NEW() inTopLevel NEW() -add(TRAIT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) COPY +add(TRAIT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) NEW(, , , , ) BunchKeywordRegister() .add(ABSTRACT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FINAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(OPEN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(INTERNAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PRIVATE_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PROTECTED_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PUBLIC_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(CLASS_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(ENUM_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FUN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(GET_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(SET_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(TRAIT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) COPY -add NEW(, , , , ) -VAL_KEYWORD NEW() +VAL_KEYWORD NEW() inTopLevel NEW() inTopLevel NEW() inTopLevel NEW() -add(VAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) COPY +add(VAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) NEW(, , , , ) BunchKeywordRegister() .add(ABSTRACT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FINAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(OPEN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(INTERNAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PRIVATE_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PROTECTED_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PUBLIC_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(CLASS_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(ENUM_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FUN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(GET_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(SET_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(TRAIT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(VAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) COPY -add NEW(, , , , ) -VAR_KEYWORD NEW() +VAR_KEYWORD NEW() inTopLevel NEW() inTopLevel NEW() inTopLevel NEW() -add(VAR_KEYWORD, inTopLevel, inTopLevel, inTopLevel) COPY +add(VAR_KEYWORD, inTopLevel, inTopLevel, inTopLevel) NEW(, , , , ) BunchKeywordRegister() .add(ABSTRACT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FINAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(OPEN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(INTERNAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PRIVATE_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PROTECTED_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PUBLIC_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(CLASS_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(ENUM_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FUN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(GET_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(SET_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(TRAIT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(VAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(VAR_KEYWORD, inTopLevel, inTopLevel, inTopLevel) COPY -add NEW(, , , , ) -TYPE_KEYWORD NEW() +TYPE_KEYWORD NEW() inTopLevel NEW() inTopLevel NEW() inTopLevel NEW() -add(TYPE_KEYWORD, inTopLevel, inTopLevel, inTopLevel) COPY +add(TYPE_KEYWORD, inTopLevel, inTopLevel, inTopLevel) NEW(, , , , ) BunchKeywordRegister() .add(ABSTRACT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FINAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(OPEN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(INTERNAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PRIVATE_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PROTECTED_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PUBLIC_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(CLASS_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(ENUM_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FUN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(GET_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(SET_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(TRAIT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(VAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(VAR_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(TYPE_KEYWORD, inTopLevel, inTopLevel, inTopLevel) COPY -add NEW(, , ) -IMPORT_KEYWORD NEW() +IMPORT_KEYWORD NEW() inTopLevel NEW() -add(IMPORT_KEYWORD, inTopLevel) COPY +add(IMPORT_KEYWORD, inTopLevel) NEW(, , ) BunchKeywordRegister() .add(ABSTRACT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FINAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(OPEN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(INTERNAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PRIVATE_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PROTECTED_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PUBLIC_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(CLASS_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(ENUM_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FUN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(GET_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(SET_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(TRAIT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(VAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(VAR_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(TYPE_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(IMPORT_KEYWORD, inTopLevel) COPY -add NEW(, , ) -PACKAGE_KEYWORD NEW() +PACKAGE_KEYWORD NEW() inTopLevel NEW() -add(PACKAGE_KEYWORD, inTopLevel) COPY +add(PACKAGE_KEYWORD, inTopLevel) NEW(, , ) BunchKeywordRegister() .add(ABSTRACT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FINAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(OPEN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(INTERNAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PRIVATE_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PROTECTED_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PUBLIC_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(CLASS_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(ENUM_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FUN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(GET_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(SET_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(TRAIT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(VAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(VAR_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(TYPE_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(IMPORT_KEYWORD, inTopLevel) .add(PACKAGE_KEYWORD, inTopLevel) COPY -add NEW(, , ) -OVERRIDE_KEYWORD NEW() +OVERRIDE_KEYWORD NEW() inTopLevel NEW() -add(OVERRIDE_KEYWORD, inTopLevel) COPY +add(OVERRIDE_KEYWORD, inTopLevel) NEW(, , ) BunchKeywordRegister() .add(ABSTRACT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FINAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(OPEN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(INTERNAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PRIVATE_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PROTECTED_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PUBLIC_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(CLASS_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(ENUM_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FUN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(GET_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(SET_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(TRAIT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(VAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(VAR_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(TYPE_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(IMPORT_KEYWORD, inTopLevel) .add(PACKAGE_KEYWORD, inTopLevel) .add(OVERRIDE_KEYWORD, inTopLevel) COPY -add NEW(, , , ) -IN_KEYWORD NEW() +IN_KEYWORD NEW() inTopLevel NEW() inTopLevel NEW() -add(IN_KEYWORD, inTopLevel, inTopLevel) COPY +add(IN_KEYWORD, inTopLevel, inTopLevel) NEW(, , , ) BunchKeywordRegister() .add(ABSTRACT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FINAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(OPEN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(INTERNAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PRIVATE_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PROTECTED_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PUBLIC_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(CLASS_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(ENUM_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FUN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(GET_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(SET_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(TRAIT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(VAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(VAR_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(TYPE_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(IMPORT_KEYWORD, inTopLevel) .add(PACKAGE_KEYWORD, inTopLevel) .add(OVERRIDE_KEYWORD, inTopLevel) .add(IN_KEYWORD, inTopLevel, inTopLevel) COPY -add NEW(, , ) -OUT_KEYWORD NEW() +OUT_KEYWORD NEW() inTopLevel NEW() -add(OUT_KEYWORD, inTopLevel) COPY +add(OUT_KEYWORD, inTopLevel) NEW(, , ) BunchKeywordRegister() .add(ABSTRACT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FINAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(OPEN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(INTERNAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PRIVATE_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PROTECTED_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PUBLIC_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(CLASS_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(ENUM_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FUN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(GET_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(SET_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(TRAIT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(VAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(VAR_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(TYPE_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(IMPORT_KEYWORD, inTopLevel) .add(PACKAGE_KEYWORD, inTopLevel) .add(OVERRIDE_KEYWORD, inTopLevel) .add(IN_KEYWORD, inTopLevel, inTopLevel) .add(OUT_KEYWORD, inTopLevel) COPY -add NEW(, , ) -OBJECT_KEYWORD NEW() +OBJECT_KEYWORD NEW() unresolvedCode NEW() -add(OBJECT_KEYWORD, unresolvedCode) COPY +add(OBJECT_KEYWORD, unresolvedCode) NEW(, , ) BunchKeywordRegister() .add(ABSTRACT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FINAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(OPEN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(INTERNAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PRIVATE_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PROTECTED_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PUBLIC_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(CLASS_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(ENUM_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FUN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(GET_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(SET_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(TRAIT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(VAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(VAR_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(TYPE_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(IMPORT_KEYWORD, inTopLevel) .add(PACKAGE_KEYWORD, inTopLevel) .add(OVERRIDE_KEYWORD, inTopLevel) .add(IN_KEYWORD, inTopLevel, inTopLevel) .add(OUT_KEYWORD, inTopLevel) .add(OBJECT_KEYWORD, unresolvedCode) COPY -registerAll NEW() -registerAll() COPY -BunchKeywordRegister() .add(ABSTRACT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FINAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(OPEN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(INTERNAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PRIVATE_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PROTECTED_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PUBLIC_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(CLASS_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(ENUM_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FUN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(GET_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(SET_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(TRAIT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(VAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(VAR_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(TYPE_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(IMPORT_KEYWORD, inTopLevel) .add(PACKAGE_KEYWORD, inTopLevel) .add(OVERRIDE_KEYWORD, inTopLevel) .add(IN_KEYWORD, inTopLevel, inTopLevel) .add(OUT_KEYWORD, inTopLevel) .add(OBJECT_KEYWORD, unresolvedCode) .registerAll() COPY +registerAll() NEW() +BunchKeywordRegister() .add(ABSTRACT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FINAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(OPEN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(INTERNAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PRIVATE_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PROTECTED_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PUBLIC_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(CLASS_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(ENUM_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FUN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(GET_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(SET_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(TRAIT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(VAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(VAR_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(TYPE_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(IMPORT_KEYWORD, inTopLevel) .add(PACKAGE_KEYWORD, inTopLevel) .add(OVERRIDE_KEYWORD, inTopLevel) .add(IN_KEYWORD, inTopLevel, inTopLevel) .add(OUT_KEYWORD, inTopLevel) .add(OBJECT_KEYWORD, unresolvedCode) .registerAll() COPY { val inTopLevel = 1.0 BunchKeywordRegister() .add(ABSTRACT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FINAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(OPEN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(INTERNAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PRIVATE_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PROTECTED_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(PUBLIC_KEYWORD, inTopLevel, inTopLevel, inTopLevel, inTopLevel) .add(CLASS_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(ENUM_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(FUN_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(GET_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(SET_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(TRAIT_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(VAL_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(VAR_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(TYPE_KEYWORD, inTopLevel, inTopLevel, inTopLevel) .add(IMPORT_KEYWORD, inTopLevel) .add(PACKAGE_KEYWORD, inTopLevel) .add(OVERRIDE_KEYWORD, inTopLevel) .add(IN_KEYWORD, inTopLevel, inTopLevel) .add(OUT_KEYWORD, inTopLevel) .add(OBJECT_KEYWORD, unresolvedCode) .registerAll() } COPY ===================== == ABSTRACT_KEYWORD == val ABSTRACT_KEYWORD = JetToken() --------------------- -JetToken NEW() -JetToken() COPY +JetToken() NEW() ===================== == FINAL_KEYWORD == val FINAL_KEYWORD OPEN_KEYWORD = JetToken() @@ -218,120 +193,100 @@ val FINAL_KEYWORD OPEN_KEYWORD = JetToken() == OPEN_KEYWORD == val OPEN_KEYWORD = JetToken() --------------------- -JetToken NEW() -JetToken() COPY +JetToken() NEW() ===================== == INTERNAL_KEYWORD == val INTERNAL_KEYWORD = JetToken() --------------------- -JetToken NEW() -JetToken() COPY +JetToken() NEW() ===================== == PRIVATE_KEYWORD == val PRIVATE_KEYWORD = JetToken() --------------------- -JetToken NEW() -JetToken() COPY +JetToken() NEW() ===================== == PROTECTED_KEYWORD == val PROTECTED_KEYWORD = JetToken() --------------------- -JetToken NEW() -JetToken() COPY +JetToken() NEW() ===================== == PUBLIC_KEYWORD == val PUBLIC_KEYWORD = JetToken() --------------------- -JetToken NEW() -JetToken() COPY +JetToken() NEW() ===================== == CLASS_KEYWORD == val CLASS_KEYWORD = JetToken() --------------------- -JetToken NEW() -JetToken() COPY +JetToken() NEW() ===================== == ENUM_KEYWORD == val ENUM_KEYWORD = JetToken() --------------------- -JetToken NEW() -JetToken() COPY +JetToken() NEW() ===================== == FUN_KEYWORD == val FUN_KEYWORD = JetToken() --------------------- -JetToken NEW() -JetToken() COPY +JetToken() NEW() ===================== == GET_KEYWORD == val GET_KEYWORD = JetToken() --------------------- -JetToken NEW() -JetToken() COPY +JetToken() NEW() ===================== == SET_KEYWORD == val SET_KEYWORD = JetToken() --------------------- -JetToken NEW() -JetToken() COPY +JetToken() NEW() ===================== == TRAIT_KEYWORD == val TRAIT_KEYWORD = JetToken() --------------------- -JetToken NEW() -JetToken() COPY +JetToken() NEW() ===================== == VAL_KEYWORD == val VAL_KEYWORD = JetToken() --------------------- -JetToken NEW() -JetToken() COPY +JetToken() NEW() ===================== == VAR_KEYWORD == val VAR_KEYWORD = JetToken() --------------------- -JetToken NEW() -JetToken() COPY +JetToken() NEW() ===================== == TYPE_KEYWORD == val TYPE_KEYWORD = JetToken() --------------------- -JetToken NEW() -JetToken() COPY +JetToken() NEW() ===================== == IMPORT_KEYWORD == val IMPORT_KEYWORD = JetToken() --------------------- -JetToken NEW() -JetToken() COPY +JetToken() NEW() ===================== == PACKAGE_KEYWORD == val PACKAGE_KEYWORD = JetToken() --------------------- -JetToken NEW() -JetToken() COPY +JetToken() NEW() ===================== == OVERRIDE_KEYWORD == val OVERRIDE_KEYWORD = JetToken() --------------------- -JetToken NEW() -JetToken() COPY +JetToken() NEW() ===================== == IN_KEYWORD == val IN_KEYWORD = JetToken() --------------------- -JetToken NEW() -JetToken() COPY +JetToken() NEW() ===================== == OUT_KEYWORD == val OUT_KEYWORD = JetToken() --------------------- -JetToken NEW() -JetToken() COPY +JetToken() NEW() ===================== == OBJECT_KEYWORD == val OBJECT_KEYWORD = JetToken() --------------------- -JetToken NEW() -JetToken() COPY +JetToken() NEW() ===================== diff --git a/compiler/testData/cfg/expressions/expressionAsFunction.values b/compiler/testData/cfg/expressions/expressionAsFunction.values index 464cf2044af..2d458dfdcc0 100644 --- a/compiler/testData/cfg/expressions/expressionAsFunction.values +++ b/compiler/testData/cfg/expressions/expressionAsFunction.values @@ -4,7 +4,7 @@ fun invoke(f: () -> Unit) { } --------------------- f NEW() -(f) NEW() -(f)() COPY +(f) COPY +(f)() NEW() { (f)() } COPY ===================== diff --git a/compiler/testData/cfg/expressions/nothingExpr.values b/compiler/testData/cfg/expressions/nothingExpr.values index a03a9daaf82..11eb2496563 100644 --- a/compiler/testData/cfg/expressions/nothingExpr.values +++ b/compiler/testData/cfg/expressions/nothingExpr.values @@ -5,8 +5,7 @@ fun Any?.doSomething() {} == bar == fun bar(): Nothing = throw Exception() --------------------- -Exception NEW() -Exception() COPY +Exception() NEW() ===================== == foo == fun foo() { @@ -16,9 +15,8 @@ fun foo() { --------------------- null NEW() null!! NEW() -doSomething NEW() -doSomething() COPY -null!!.doSomething() COPY +doSomething() NEW() +null!!.doSomething() COPY doSomething NEW() bar().doSomething COPY { null!!.doSomething() bar().doSomething } COPY diff --git a/compiler/testData/cfg/expressions/thisExpression.values b/compiler/testData/cfg/expressions/thisExpression.values index 843b4eea493..36c7359fc2e 100644 --- a/compiler/testData/cfg/expressions/thisExpression.values +++ b/compiler/testData/cfg/expressions/thisExpression.values @@ -3,7 +3,6 @@ fun Function0.foo() { this() } --------------------- -this NEW() -this() COPY -{ this() } COPY +this() NEW() +{ this() } COPY ===================== diff --git a/compiler/testData/cfg/expressions/unresolvedCall.instructions b/compiler/testData/cfg/expressions/unresolvedCall.instructions index 000dff013c9..9bf196dff93 100644 --- a/compiler/testData/cfg/expressions/unresolvedCall.instructions +++ b/compiler/testData/cfg/expressions/unresolvedCall.instructions @@ -14,7 +14,7 @@ L0: error(foo, No resolved call) error(foo, No resolved call) r(a) -> - magic(foo|) -> + magic(foo()|) -> L1: 1 NEXT:[] error: diff --git a/compiler/testData/cfg/expressions/unresolvedCall.values b/compiler/testData/cfg/expressions/unresolvedCall.values index f77af8f2f14..54739cc2bc7 100644 --- a/compiler/testData/cfg/expressions/unresolvedCall.values +++ b/compiler/testData/cfg/expressions/unresolvedCall.values @@ -4,8 +4,7 @@ fun test(a: Any) { } --------------------- a NEW() -foo NEW() -foo() COPY -a.foo() COPY +foo() NEW() +a.foo() COPY { a.foo() } COPY ===================== diff --git a/compiler/testData/cfg/tailCalls/finally.values b/compiler/testData/cfg/tailCalls/finally.values index 5caffa25f45..3c892f5ed05 100644 --- a/compiler/testData/cfg/tailCalls/finally.values +++ b/compiler/testData/cfg/tailCalls/finally.values @@ -7,7 +7,6 @@ tailRecursive fun test() : Int { } } --------------------- -test NEW() -test() COPY -{ test() } COPY +test() NEW() +{ test() } COPY ===================== diff --git a/compiler/testData/cfg/tailCalls/finallyWithReturn.values b/compiler/testData/cfg/tailCalls/finallyWithReturn.values index fc2e3eb7d23..ae6a6469285 100644 --- a/compiler/testData/cfg/tailCalls/finallyWithReturn.values +++ b/compiler/testData/cfg/tailCalls/finallyWithReturn.values @@ -7,6 +7,5 @@ tailRecursive fun test() : Int { } } --------------------- -test NEW() -test() COPY +test() NEW() ===================== diff --git a/compiler/testData/cfg/tailCalls/sum.values b/compiler/testData/cfg/tailCalls/sum.values index c3050cd2100..89681b86d73 100644 --- a/compiler/testData/cfg/tailCalls/sum.values +++ b/compiler/testData/cfg/tailCalls/sum.values @@ -5,21 +5,16 @@ tailRecursive fun sum(x: Long, sum: Long): Long { } --------------------- x NEW() -== NEW(, ) -0 NEW() -toLong NEW() -toLong() COPY -0.toLong() COPY -x == 0.toLong() COPY +0 NEW() +toLong() NEW() +0.toLong() COPY +x == 0.toLong() NEW(, ) sum NEW() -sum NEW(, ) -x NEW() -- NEW(, ) -1 NEW() -x - 1 COPY +x NEW() +1 NEW() +x - 1 NEW(, ) sum NEW() -+ NEW(, ) -x NEW() -sum + x COPY -sum(x - 1, sum + x) COPY +x NEW() +sum + x NEW(, ) +sum(x - 1, sum + x) NEW(, ) ===================== diff --git a/compiler/testData/cfg/tailCalls/try.values b/compiler/testData/cfg/tailCalls/try.values index 81f59ae06ac..8605d77c651 100644 --- a/compiler/testData/cfg/tailCalls/try.values +++ b/compiler/testData/cfg/tailCalls/try.values @@ -7,6 +7,5 @@ tailRecursive fun foo() { } } --------------------- -foo NEW() -foo() COPY +foo() NEW() ===================== diff --git a/compiler/testData/cfg/tailCalls/tryCatchFinally.values b/compiler/testData/cfg/tailCalls/tryCatchFinally.values index d24e781370f..e555ef8ad11 100644 --- a/compiler/testData/cfg/tailCalls/tryCatchFinally.values +++ b/compiler/testData/cfg/tailCalls/tryCatchFinally.values @@ -9,15 +9,12 @@ fun test() : Unit { } } --------------------- -test NEW() -test() COPY -{ test() } COPY -test NEW() -test() COPY -{ test() } COPY -test NEW() -test() COPY -{ test() } COPY +test() NEW() +{ test() } COPY +test() NEW() +{ test() } COPY +test() NEW() +{ test() } COPY try { test() } catch (any : Exception) { test() } finally { test() } NEW(, ) { try { test() } catch (any : Exception) { test() } finally { test() } } COPY =====================