Frontend: don't resolve default parameters value when not need complete analysis.
This commit is contained in:
@@ -400,7 +400,7 @@ public class BodyResolver {
|
|||||||
if (unsubstitutedPrimaryConstructor != null) {
|
if (unsubstitutedPrimaryConstructor != null) {
|
||||||
WritableScope parameterScope = getPrimaryConstructorParametersScope(classDescriptor.getScopeForSupertypeResolution(), unsubstitutedPrimaryConstructor);
|
WritableScope parameterScope = getPrimaryConstructorParametersScope(classDescriptor.getScopeForSupertypeResolution(), unsubstitutedPrimaryConstructor);
|
||||||
expressionTypingServices.resolveValueParameters(klass.getPrimaryConstructorParameters(), unsubstitutedPrimaryConstructor.getValueParameters(),
|
expressionTypingServices.resolveValueParameters(klass.getPrimaryConstructorParameters(), unsubstitutedPrimaryConstructor.getValueParameters(),
|
||||||
parameterScope, context.getOuterDataFlowInfo(), trace);
|
parameterScope, context.getOuterDataFlowInfo(), trace, context.completeAnalysisNeeded(klass));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -616,9 +616,12 @@ public class BodyResolver {
|
|||||||
List<JetParameter> valueParameters = function.getValueParameters();
|
List<JetParameter> valueParameters = function.getValueParameters();
|
||||||
List<ValueParameterDescriptor> valueParameterDescriptors = functionDescriptor.getValueParameters();
|
List<ValueParameterDescriptor> valueParameterDescriptors = functionDescriptor.getValueParameters();
|
||||||
|
|
||||||
expressionTypingServices.resolveValueParameters(valueParameters, valueParameterDescriptors, functionInnerScope, context.getOuterDataFlowInfo(), trace);
|
boolean needCompleteAnalysis = context.completeAnalysisNeeded(function);
|
||||||
|
|
||||||
if (!context.completeAnalysisNeeded(function)) return;
|
expressionTypingServices.resolveValueParameters(valueParameters, valueParameterDescriptors, functionInnerScope,
|
||||||
|
context.getOuterDataFlowInfo(), trace, needCompleteAnalysis);
|
||||||
|
|
||||||
|
if (!needCompleteAnalysis) return;
|
||||||
|
|
||||||
JetExpression bodyExpression = function.getBodyExpression();
|
JetExpression bodyExpression = function.getBodyExpression();
|
||||||
if (bodyExpression != null) {
|
if (bodyExpression != null) {
|
||||||
@@ -641,7 +644,8 @@ public class BodyResolver {
|
|||||||
|
|
||||||
JetScope scope = getPrimaryConstructorParametersScope(declaringScope, constructorDescriptor);
|
JetScope scope = getPrimaryConstructorParametersScope(declaringScope, constructorDescriptor);
|
||||||
|
|
||||||
expressionTypingServices.resolveValueParameters(valueParameters, valueParameterDescriptors, scope, context.getOuterDataFlowInfo(), trace);
|
expressionTypingServices.resolveValueParameters(valueParameters, valueParameterDescriptors, scope,
|
||||||
|
context.getOuterDataFlowInfo(), trace, /* needCompleteAnalysis = */ true);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void resolveAnnotationArguments(@NotNull JetScope scope, @NotNull JetModifierListOwner owner) {
|
private void resolveAnnotationArguments(@NotNull JetScope scope, @NotNull JetModifierListOwner owner) {
|
||||||
|
|||||||
+4
-2
@@ -36,7 +36,6 @@ import org.jetbrains.jet.lang.resolve.calls.CallResolverExtensionProvider;
|
|||||||
import org.jetbrains.jet.lang.resolve.calls.autocasts.DataFlowInfo;
|
import org.jetbrains.jet.lang.resolve.calls.autocasts.DataFlowInfo;
|
||||||
import org.jetbrains.jet.lang.resolve.calls.context.ContextDependency;
|
import org.jetbrains.jet.lang.resolve.calls.context.ContextDependency;
|
||||||
import org.jetbrains.jet.lang.resolve.calls.context.ResolutionContext;
|
import org.jetbrains.jet.lang.resolve.calls.context.ResolutionContext;
|
||||||
import org.jetbrains.jet.lang.resolve.constants.CompileTimeConstant;
|
|
||||||
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
||||||
import org.jetbrains.jet.lang.resolve.scopes.WritableScope;
|
import org.jetbrains.jet.lang.resolve.scopes.WritableScope;
|
||||||
import org.jetbrains.jet.lang.resolve.scopes.WritableScopeImpl;
|
import org.jetbrains.jet.lang.resolve.scopes.WritableScopeImpl;
|
||||||
@@ -372,7 +371,8 @@ public class ExpressionTypingServices {
|
|||||||
@NotNull List<ValueParameterDescriptor> valueParameterDescriptors,
|
@NotNull List<ValueParameterDescriptor> valueParameterDescriptors,
|
||||||
@NotNull JetScope declaringScope,
|
@NotNull JetScope declaringScope,
|
||||||
@NotNull DataFlowInfo dataFlowInfo,
|
@NotNull DataFlowInfo dataFlowInfo,
|
||||||
@NotNull BindingTrace trace
|
@NotNull BindingTrace trace,
|
||||||
|
boolean needCompleteAnalysis
|
||||||
) {
|
) {
|
||||||
for (int i = 0; i < valueParameters.size(); i++) {
|
for (int i = 0; i < valueParameters.size(); i++) {
|
||||||
ValueParameterDescriptor valueParameterDescriptor = valueParameterDescriptors.get(i);
|
ValueParameterDescriptor valueParameterDescriptor = valueParameterDescriptors.get(i);
|
||||||
@@ -380,6 +380,8 @@ public class ExpressionTypingServices {
|
|||||||
|
|
||||||
annotationResolver.resolveAnnotationsArguments(declaringScope, jetParameter.getModifierList(), trace);
|
annotationResolver.resolveAnnotationsArguments(declaringScope, jetParameter.getModifierList(), trace);
|
||||||
|
|
||||||
|
if (!needCompleteAnalysis) continue;
|
||||||
|
|
||||||
resolveDefaultValue(declaringScope, valueParameterDescriptor, jetParameter, dataFlowInfo, trace);
|
resolveDefaultValue(declaringScope, valueParameterDescriptor, jetParameter, dataFlowInfo, trace);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -167,8 +167,8 @@ public class ExpressionTypingVisitorForStatements extends ExpressionTypingVisito
|
|||||||
JetScope functionInnerScope = FunctionDescriptorUtil.getFunctionInnerScope(context.scope, functionDescriptor, context.trace);
|
JetScope functionInnerScope = FunctionDescriptorUtil.getFunctionInnerScope(context.scope, functionDescriptor, context.trace);
|
||||||
context.expressionTypingServices.checkFunctionReturnType(functionInnerScope, function, functionDescriptor, context.dataFlowInfo, null, context.trace);
|
context.expressionTypingServices.checkFunctionReturnType(functionInnerScope, function, functionDescriptor, context.dataFlowInfo, null, context.trace);
|
||||||
|
|
||||||
context.expressionTypingServices.resolveValueParameters(
|
context.expressionTypingServices.resolveValueParameters(function.getValueParameters(), functionDescriptor.getValueParameters(),
|
||||||
function.getValueParameters(), functionDescriptor.getValueParameters(), scope, context.dataFlowInfo, context.trace);
|
scope, context.dataFlowInfo, context.trace, /* needCompleteAnalysis = */ true);
|
||||||
|
|
||||||
ModifiersChecker.create(context.trace).checkModifiersForLocalDeclaration(function);
|
ModifiersChecker.create(context.trace).checkModifiersForLocalDeclaration(function);
|
||||||
return DataFlowUtils.checkStatementType(function, context, context.dataFlowInfo);
|
return DataFlowUtils.checkStatementType(function, context, context.dataFlowInfo);
|
||||||
|
|||||||
Reference in New Issue
Block a user