- if(expandSubsumptions())
- new SubSolver(compilationContext.errorLog, effectSubsumptions, potentialSingletonEffects, globalLoc).solve();
+ if(expandSubsumptions()) {
+ if(!effectSubsumptions.isEmpty())
+ SubSolver2.solve(compilationContext.errorLog, effectSubsumptions);
+
+ if(!potentialSingletonEffects.isEmpty())
+ try {
+ THashSet<TMetaVar> vars = new THashSet<TMetaVar>(4);
+ for(Type type : potentialSingletonEffects)
+ type.collectMetaVars(vars);
+ for(TMetaVar var : vars) {
+ if(var.getRef() == null) {
+ Polarity polarity = var.getPolarity();
+ if(!polarity.isNegative())
+
+ var.setRef(Types.NO_EFFECTS);
+ }
+ }
+ } catch(UnificationException e) {
+ throw new InternalCompilerError(e);
+ }
+ //new SubSolver(compilationContext.errorLog, effectSubsumptions, potentialSingletonEffects, globalLoc).solve();
+ }