private List<PDefinition> getBindDefinitions(PBind bind) { List<PMultipleBind> binds = af.createPBindAssistant().getMultipleBindList(bind); return getMultipleBindDefs(binds); }
@Override public PBindAssistantTC createPBindAssistant() { return new PBindAssistantTC(this); }
public POForAllContext(ITypeCheckerAssistantFactory af, AIotaExp exp) { this.bindings = af.createPBindAssistant().getMultipleBindList(exp.getBind()); }
public POForAllContext(ITypeCheckerAssistantFactory af, AExists1Exp exp) { this.bindings = af.createPBindAssistant().getMultipleBindList(exp.getBind()); }
@Override public LexNameSet caseAIotaExp(AIotaExp node, FreeVarInfo info) throws AnalysisException { PDefinition def = AstFactory.newAMultiBindListDefinition(node.getLocation(), af.createPBindAssistant().getMultipleBindList(node.getBind())); FreeVarInfo local = info.set(new FlatEnvironment(af, def, info.env)); LexNameSet names = new LexNameSet(); if (node.getPredicate() != null) { names.addAll(node.getPredicate().apply(this, local)); } names.addAll(node.getBind().apply(this, local)); return names; }
@Override public LexNameSet caseASeqCompSeqExp(ASeqCompSeqExp node, FreeVarInfo info) throws AnalysisException { FreeVarInfo local = null; LexNameSet names = new LexNameSet(); // Note "first" is conditional if (node.getSeqBind() != null) { PDefinition def = AstFactory.newAMultiBindListDefinition(node.getLocation(), af.createPBindAssistant().getMultipleBindList(node.getSeqBind())); def.parent(node.getSeqBind()); local = info.set(new FlatEnvironment(af, def, info.env)); names.addAll(node.getSeqBind().apply(this, local)); } else if (node.getSetBind() != null) { PDefinition def = AstFactory.newAMultiBindListDefinition(node.getLocation(), af.createPBindAssistant().getMultipleBindList(node.getSetBind())); def.parent(node.getSetBind()); local = info.set(new FlatEnvironment(af, def, info.env)); names.addAll(node.getSetBind().apply(this, local)); } if (node.getPredicate() != null) { node.getPredicate().apply(this, local); } return names; }
PDefinition def = AstFactory.newAMultiBindListDefinition(bind.getLocation(), question.assistantFactory.createPBindAssistant().getMultipleBindList(bind));
@Override public PType caseAExists1Exp(AExists1Exp node, TypeCheckInfo question) throws AnalysisException { node.setDef(AstFactory.newAMultiBindListDefinition(node.getBind().getLocation(), question.assistantFactory.createPBindAssistant().getMultipleBindList(node.getBind()))); node.getDef().apply(THIS, question.newConstraint(null)); Environment local = new FlatCheckedEnvironment(question.assistantFactory, node.getDef(), question.env, question.scope); if (node.getBind() instanceof ATypeBind) { ATypeBind tb = (ATypeBind) node.getBind(); question.assistantFactory.createATypeBindAssistant().typeResolve(tb, THIS, question); } question.qualifiers = null; if (!question.assistantFactory.createPTypeAssistant().isType(node.getPredicate().apply(THIS, new TypeCheckInfo(question.assistantFactory, local, question.scope, null, AstFactory.newABooleanBasicType(node.getLocation()), null)), ABooleanBasicType.class)) { TypeCheckerErrors.report(3088, "Predicate is not boolean", node.getPredicate().getLocation(), node.getPredicate()); } local.unusedCheck(); node.setType(AstFactory.newABooleanBasicType(node.getLocation())); return question.assistantFactory.createPTypeAssistant().checkConstraint(question.constraint, node.getType(), node.getLocation()); }
@Override public PType caseAIotaExp(AIotaExp node, TypeCheckInfo question) throws AnalysisException PDefinition def = AstFactory.newAMultiBindListDefinition(node.getLocation(), question.assistantFactory.createPBindAssistant().getMultipleBindList(node.getBind()));
def = AstFactory.newAMultiBindListDefinition(node.getLocation(), question.assistantFactory.createPBindAssistant().getMultipleBindList(node.getSetBind())); def.parent(node.getSetBind()); } else def = AstFactory.newAMultiBindListDefinition(node.getLocation(), question.assistantFactory.createPBindAssistant().getMultipleBindList(node.getSeqBind())); def.parent(node.getSeqBind());
PDefinition def = AstFactory.newAMultiBindListDefinition(node.getBind().getLocation(), question.assistantFactory.createPBindAssistant().getMultipleBindList(node.getBind()));