diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/ScriptHeaderResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/ScriptHeaderResolver.java index 8a63e94e56c..a52c5ff6dc7 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/ScriptHeaderResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/ScriptHeaderResolver.java @@ -129,28 +129,40 @@ public class ScriptHeaderResolver { for (Map.Entry e : c.getScripts().entrySet()) { JetScript declaration = e.getKey(); ScriptDescriptorImpl descriptor = (ScriptDescriptorImpl) e.getValue(); - WritableScope scope = descriptor.getScopeForBodyResolution(); - List valueParameters = Lists.newArrayList(); - - scope.setImplicitReceiver(descriptor.getThisAsReceiverParameter()); - - JetFile file = (JetFile) declaration.getContainingFile(); - JetScriptDefinition scriptDefinition = JetScriptDefinitionProvider.getInstance(file.getProject()).findScriptDefinition(file); - - int index = 0; - List scriptParameters = !scriptDefinition.getScriptParameters().isEmpty() - ? scriptDefinition.getScriptParameters() - : c.getTopDownAnalysisParameters().getScriptParameters(); - - for (AnalyzerScriptParameter scriptParameter : scriptParameters) { - ValueParameterDescriptor parameter = resolveScriptParameter(scriptParameter, index, descriptor); - valueParameters.add(parameter); - scope.addVariableDescriptor(parameter); - ++index; - } + List valueParameters = resolveScriptParameters(c, declaration, descriptor); descriptor.setValueParameters(valueParameters); + + WritableScope scope = descriptor.getScopeForBodyResolution(); + scope.setImplicitReceiver(descriptor.getThisAsReceiverParameter()); + for (ValueParameterDescriptor valueParameterDescriptor : valueParameters) { + scope.addVariableDescriptor(valueParameterDescriptor); + } } } + + @NotNull + public List resolveScriptParameters( + @NotNull TopDownAnalysisContext c, + @NotNull JetScript declaration, + @NotNull ScriptDescriptor scriptDescriptor + ) { + List valueParameters = Lists.newArrayList(); + + JetFile file = (JetFile) declaration.getContainingFile(); + JetScriptDefinition scriptDefinition = JetScriptDefinitionProvider.getInstance(file.getProject()).findScriptDefinition(file); + + int index = 0; + List scriptParameters = !scriptDefinition.getScriptParameters().isEmpty() + ? scriptDefinition.getScriptParameters() + : c.getTopDownAnalysisParameters().getScriptParameters(); + + for (AnalyzerScriptParameter scriptParameter : scriptParameters) { + ValueParameterDescriptor parameter = resolveScriptParameter(scriptParameter, index, scriptDescriptor); + valueParameters.add(parameter); + ++index; + } + return valueParameters; + } }