JS backend: minor refactoring in TranslationContext -- dropped extra constructors.
This commit is contained in:
@@ -52,13 +52,12 @@ public class TranslationContext {
|
|||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public static TranslationContext rootContext(@NotNull StaticContext staticContext, JsFunction rootFunction) {
|
public static TranslationContext rootContext(@NotNull StaticContext staticContext, JsFunction rootFunction) {
|
||||||
DynamicContext rootDynamicContext =
|
DynamicContext rootDynamicContext = DynamicContext.rootContext(rootFunction.getScope(), rootFunction.getBody());
|
||||||
DynamicContext.rootContext(rootFunction.getScope(), rootFunction.getBody());
|
|
||||||
AliasingContext rootAliasingContext = AliasingContext.getCleanContext();
|
AliasingContext rootAliasingContext = AliasingContext.getCleanContext();
|
||||||
return new TranslationContext(null, staticContext, rootDynamicContext, rootAliasingContext, null, null);
|
return new TranslationContext(null, staticContext, rootDynamicContext, rootAliasingContext, null, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
private final HashMap<JsExpression, TemporaryConstVariable> expressionToTempConstVariableCache = new HashMap<JsExpression, TemporaryConstVariable>();
|
private final Map<JsExpression, TemporaryConstVariable> expressionToTempConstVariableCache = new HashMap<JsExpression, TemporaryConstVariable>();
|
||||||
|
|
||||||
private TranslationContext(
|
private TranslationContext(
|
||||||
@Nullable TranslationContext parent,
|
@Nullable TranslationContext parent,
|
||||||
@@ -76,23 +75,6 @@ public class TranslationContext {
|
|||||||
this.definitionPlace = definitionPlace;
|
this.definitionPlace = definitionPlace;
|
||||||
}
|
}
|
||||||
|
|
||||||
private TranslationContext(
|
|
||||||
@NotNull TranslationContext parent,
|
|
||||||
@NotNull AliasingContext aliasingContext
|
|
||||||
) {
|
|
||||||
this(parent, parent.staticContext, parent.dynamicContext, aliasingContext, parent.usageTracker, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
private TranslationContext(
|
|
||||||
@NotNull TranslationContext parent,
|
|
||||||
@NotNull JsFunction fun,
|
|
||||||
@NotNull AliasingContext aliasingContext,
|
|
||||||
@Nullable UsageTracker usageTracker
|
|
||||||
) {
|
|
||||||
this(parent, parent.staticContext, DynamicContext.newContext(fun.getScope(), fun.getBody()), aliasingContext,
|
|
||||||
usageTracker == null ? parent.usageTracker : usageTracker, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
public UsageTracker usageTracker() {
|
public UsageTracker usageTracker() {
|
||||||
return usageTracker;
|
return usageTracker;
|
||||||
@@ -104,12 +86,17 @@ public class TranslationContext {
|
|||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public TranslationContext contextWithScope(@NotNull JsFunction fun) {
|
public TranslationContext contextWithScope(@NotNull JsFunction fun) {
|
||||||
return new TranslationContext(this, fun, aliasingContext, null);
|
return this.newFunctionBody(fun, aliasingContext);
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public TranslationContext newFunctionBody(@NotNull JsFunction fun, @Nullable AliasingContext aliasingContext) {
|
public TranslationContext newFunctionBody(@NotNull JsFunction fun, @Nullable AliasingContext aliasingContext) {
|
||||||
return new TranslationContext(this, fun, aliasingContext == null ? this.aliasingContext.inner() : aliasingContext, null);
|
DynamicContext dynamicContext = DynamicContext.newContext(fun.getScope(), fun.getBody());
|
||||||
|
if (aliasingContext == null) {
|
||||||
|
aliasingContext = this.aliasingContext.inner();
|
||||||
|
}
|
||||||
|
|
||||||
|
return new TranslationContext(this, this.staticContext, dynamicContext, aliasingContext, this.usageTracker, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@@ -130,19 +117,24 @@ public class TranslationContext {
|
|||||||
return new TranslationContext(this, staticContext, dynamicContext, aliasingContext, usageTracker, place);
|
return new TranslationContext(this, staticContext, dynamicContext, aliasingContext, usageTracker, place);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
private TranslationContext innerWithAliasingContext(AliasingContext aliasingContext) {
|
||||||
|
return new TranslationContext(this, this.staticContext, this.dynamicContext, aliasingContext, this.usageTracker, null);
|
||||||
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public TranslationContext innerContextWithAliased(@NotNull DeclarationDescriptor correspondingDescriptor, @NotNull JsNameRef alias) {
|
public TranslationContext innerContextWithAliased(@NotNull DeclarationDescriptor correspondingDescriptor, @NotNull JsNameRef alias) {
|
||||||
return new TranslationContext(this, aliasingContext.inner(correspondingDescriptor, alias));
|
return this.innerWithAliasingContext(aliasingContext.inner(correspondingDescriptor, alias));
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public TranslationContext innerContextWithAliasesForExpressions(@NotNull Map<JetExpression, JsExpression> aliases) {
|
public TranslationContext innerContextWithAliasesForExpressions(@NotNull Map<JetExpression, JsExpression> aliases) {
|
||||||
return new TranslationContext(this, aliasingContext.withExpressionsAliased(aliases));
|
return this.innerWithAliasingContext(aliasingContext.withExpressionsAliased(aliases));
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public TranslationContext innerContextWithDescriptorsAliased(@NotNull Map<DeclarationDescriptor, JsExpression> aliases) {
|
public TranslationContext innerContextWithDescriptorsAliased(@NotNull Map<DeclarationDescriptor, JsExpression> aliases) {
|
||||||
return new TranslationContext(this, aliasingContext.withDescriptorsAliased(aliases));
|
return this.innerWithAliasingContext(aliasingContext.withDescriptorsAliased(aliases));
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
|
|||||||
Reference in New Issue
Block a user