X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.scl.compiler%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fcompiler%2Finternal%2Felaboration%2Fsubsumption%2FVar.java;h=66b5fd46323d991aeaf928502f7558d223a10910;hb=refs%2Fchanges%2F38%2F238%2F2;hp=00783d851722931c04e547d477fc091772f1e177;hpb=24e2b34260f219f0d1644ca7a138894980e25b14;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/elaboration/subsumption/Var.java b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/elaboration/subsumption/Var.java index 00783d851..66b5fd463 100644 --- a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/elaboration/subsumption/Var.java +++ b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/elaboration/subsumption/Var.java @@ -1,290 +1,290 @@ -package org.simantics.scl.compiler.internal.elaboration.subsumption; - -import java.util.ArrayList; - -import org.simantics.scl.compiler.common.exceptions.InternalCompilerError; -import org.simantics.scl.compiler.internal.types.effects.EffectIdMap; -import org.simantics.scl.compiler.top.SCLCompilerConfiguration; -import org.simantics.scl.compiler.types.TMetaVar; -import org.simantics.scl.compiler.types.Type; -import org.simantics.scl.compiler.types.exceptions.UnificationException; - -public class Var { - String name; - - int constLowerBound = EffectIdMap.MIN; - int constUpperBound = EffectIdMap.MAX; - int upperApprox = EffectIdMap.MAX; - TMetaVar original; - - ArrayList simpleLowerBounds = new ArrayList(); - ArrayList simpleUpperBounds = new ArrayList(); - ArrayList complexLowerBounds = new ArrayList(); - ArrayList complexUpperBounds = new ArrayList(); - - SubSolver solver; - boolean dirty; - - public Var(TMetaVar original, String name, SubSolver solver) { - this.original = original; - this.name = name; - this.solver = solver; - markDirty(); - } - - void markDirty() { - if(!dirty) { - dirty = true; - solver.dirtyQueue.add(this); - } - } - - /** - * Adds a constant constraint - */ - public void addUpperBound(int c) { - c &= constUpperBound; - if(c != constUpperBound) { - if((c & constLowerBound) != constLowerBound) { - solver.errorLog.log(solver.globalLoc, "Subsumption failed: " + - solver.effectIds.toType(constLowerBound) + " is not a subtype of " + - solver.effectIds.toType(c) - ); - return; - } - constUpperBound = c; - for(int i=0;i