public void runTypeCheckingAction(SNode node, ITypechecking.Action r) { final ITypeContextOwner contextOwner = myTypecheckingContextOwner.get(); TypeCheckingContext context = acquireTypecheckingContext(node, contextOwner); try { r.run(context); } finally { releaseTypecheckingContext(node, contextOwner); } }
public void runTypeCheckingAction( @NotNull final ITypeContextOwner contextOwner, SNode node, ITypechecking.Action r) { final ITypeContextOwner savedOwner = myTypecheckingContextOwner.get(); myTypecheckingContextOwner.set(contextOwner); final SubtypingCache savedSubtypingCache = mySubtypingCache.get(); mySubtypingCache.set(null); TypeCheckingContext context = acquireTypecheckingContext(node, contextOwner); try { r.run(context); } finally { releaseTypecheckingContext(node, contextOwner); myTypecheckingContextOwner.set(savedOwner); mySubtypingCache.set(savedSubtypingCache); } }