@Override public PType caseALetBeStExp(ALetBeStExp node, TypeCheckInfo question) throws AnalysisException { Entry<PType, AMultiBindListDefinition> res = typecheckLetBeSt(node, node.getLocation(), node.getBind(), node.getSuchThat(), node.getValue(), question); node.setDef(res.getValue()); node.setType(res.getKey()); return node.getType(); }
@Override public Value caseALetBeStExp(ALetBeStExp node, Context ctxt) throws AnalysisException { return evalLetBeSt(node, node.getLocation(), node.getDef(), node.getSuchThat(), node.getValue(), 4015, "expression", ctxt); }
@Override public LexNameSet caseALetBeStExp(ALetBeStExp node, FreeVarInfo info) throws AnalysisException { PDefinition def = AstFactory.newAMultiBindListDefinition(node.getLocation(), af.createPMultipleBindAssistant().getMultipleBindList(node.getBind())); FreeVarInfo local = info.set(new FlatEnvironment(af, def, info.env)); LexNameSet names = node.getBind().apply(this, local); if (node.getSuchThat() != null) { names.addAll(node.getSuchThat().apply(this, local)); } names.addAll(node.getValue().apply(this, local)); return names; }