protected boolean anyBinds() { return !deftype.getParameters().isEmpty(); }
@Override public String caseAOperationType(AOperationType type) throws AnalysisException { List<PType> parameters = type.getParameters(); String params = parameters.isEmpty() ? "()" : Utils.listToString(parameters, " * "); return "(" + params + " ==> " + type.getResult() + ")"; }
private void addParameterBinds(LinkedList<PMultipleBind> r) { Iterator<PType> types = deftype.getParameters().iterator(); for (PPattern p : paramPatternList) { ATypeMultipleBind tmBind = new ATypeMultipleBind(); List<PPattern> pats = new LinkedList<PPattern>(); pats.add(p.clone()); tmBind.setType(types.next().clone()); tmBind.setPlist(pats); r.add(tmBind); } }
public List<? extends PDefinition> getParamDefinitions( AExplicitOperationDefinition node) { List<PDefinition> defs = new Vector<PDefinition>(); Iterator<PType> titer = ((AOperationType) node.getType()).getParameters().iterator(); for (PPattern p : node.getParameterPatterns()) { defs.addAll(af.createPPatternAssistant().getDefinitions(p, titer.next(), NameScope.LOCAL)); } return af.createPDefinitionAssistant().checkDuplicatePatterns(node, defs); }
@Override public STypeIR caseAOperationType(AOperationType node, IRInfo question) throws AnalysisException { return question.getTypeAssistant().consMethodType(node, node.getParameters(), node.getResult(), question); }
@Override public Boolean caseAOperationType(AOperationType type, AAccessSpecifierAccessSpecifier accessSpecifier) throws AnalysisException { for (PType t : type.getParameters()) { if (t.apply(this, accessSpecifier))// (PTypeAssistantTC.narrowerThan(t, accessSpecifier)) { return true; } } return type.getResult().apply(this, accessSpecifier); // PTypeAssistantTC.narrowerThan(type.getResult(),accessSpecifier); }
@Override public Boolean caseAOperationType(AOperationType type, Object other) throws AnalysisException { other = af.createPTypeAssistant().deBracket(other); if (!(other instanceof AOperationType)) { return false; } AOperationType oother = (AOperationType) other; return type.getResult().apply(this, oother.getResult()) && af.createPTypeAssistant().equals(type.getParameters(), oother.getParameters()); }
@Override public Integer caseAOperationType(AOperationType type) throws AnalysisException { AOperationType otype = type; return af.createPTypeAssistant().hashCode(otype.getParameters()) + af.createPTypeAssistant().hashCode(otype.getResult()); }
@Override public void caseAOperationType(AOperationType type) throws AnalysisException { if (!type.getResolved()) { return; } else { type.setResolved(false); } for (PType ot : type.getParameters()) { ot.apply(THIS); } type.getResult().apply(THIS); }
@Override public PTypeList caseAOperationType(AOperationType node) throws AnalysisException { PTypeList list = new PTypeList(); for (PType ptype : node.getParameters()) { list.addAll(ptype.apply(THIS)); } list.addAll(node.getResult().apply(THIS)); return list; }
public PType operationApply(AApplyExp node, boolean isSimple, AOperationType ot, TypeCheckInfo question) List<PType> ptypes = ot.getParameters();
List<PType> ptypes = ((AOperationType) node.getType()).getParameters(); LinkedList<PPattern> paramPatterns = node.getParameterPatterns();
throws AnalysisException LinkedList<PType> ptypes = optype.getParameters();
@SuppressWarnings("unchecked") public AFunctionType getPreType(AOperationType type, AStateDefinition state, SClassDefinition classname, boolean isStatic) { if (state != null) { PTypeList params = new PTypeList(); params.addAll((LinkedList<PType>) type.getParameters().clone()); params.add(AstFactory.newAUnresolvedType(state.getName())); return AstFactory.newAFunctionType(type.getLocation(), false, params, AstFactory.newABooleanBasicType(type.getLocation())); } else if (classname != null && !isStatic) { PTypeList params = new PTypeList(); params.addAll((Collection<? extends PType>) type.getParameters().clone()); params.add(AstFactory.newAUnresolvedType(classname.getName())); return AstFactory.newAFunctionType(type.getLocation(), false, params, AstFactory.newABooleanBasicType(type.getLocation())); } else { return AstFactory.newAFunctionType(type.getLocation(), false, (List<PType>) type.getParameters().clone(), AstFactory.newABooleanBasicType(type.getLocation())); } }
public ParameterPatternObligation(AExplicitOperationDefinition def, IPOContextStack ctxt, IPogAssistantFactory af) throws AnalysisException { super(def, POType.OPERATION_PATTERNS, ctxt, def.getLocation(), af); this.assistantFactory = af; stitch = generate(def.getPredef(), cloneListPatternList(assistantFactory.createAExplicitOperationDefinitionAssistant().getParamPatternList(def)), cloneListType(((AOperationType) def.getType()).getParameters()), ((AOperationType) def.getType()).getResult().clone()); valuetree.setPredicate(ctxt.getPredWithContext(stitch)); }
public ParameterPatternObligation(AImplicitOperationDefinition def, IPOContextStack ctxt, IPogAssistantFactory af) throws AnalysisException { super(def, POType.OPERATION_PATTERNS, ctxt, def.getLocation(), af); this.assistantFactory = af; stitch = generate(def.getPredef(), cloneListPatternList(assistantFactory.createAImplicitOperationDefinitionAssistant().getListParamPatternList(def)), cloneListType(((AOperationType) def.getType()).getParameters()), ((AOperationType) def.getType()).getResult().clone()); valuetree.setPredicate(ctxt.getPredWithContext(stitch)); }
@Override public PType caseAFieldField(AFieldField f, Newquestion question) throws AnalysisException { // Recursion defence done by the type f.setType(af.createPTypeAssistant().typeResolve(f.getType(), question.root, question.rootVisitor, question.question)); if (question.question.env.isVDMPP()) { if (f.getType() instanceof AFunctionType) { f.getTagname().setTypeQualifier(((AFunctionType) f.getType()).getParameters()); } else if (f.getType() instanceof AOperationType) { f.getTagname().setTypeQualifier(((AOperationType) f.getType()).getParameters()); } } return f.getType(); }
@Override public void caseAExplicitOperationDefinition( AExplicitOperationDefinition node, NewQuestion question) throws AnalysisException { node.setType(af.createPTypeAssistant().typeResolve(node.getType(), null, question.rootVisitor, question.question)); if (question.question.env.isVDMPP()) { node.getName().setTypeQualifier(((AOperationType) node.getType()).getParameters()); if (node.getName().getName().equals(node.getClassDefinition().getName().getName())) { node.setIsConstructor(true); node.getClassDefinition().setHasContructors(true); } } if (node.getPrecondition() != null) { node.getPredef().apply(this, question); } if (node.getPostcondition() != null) { node.getPostdef().apply(this, question); } for (PPattern p : node.getParameterPatterns()) { af.createPPatternAssistant().typeResolve(p, question.rootVisitor, question.question); } }
node.getName().setTypeQualifier(((AOperationType) node.getType()).getParameters());
@SuppressWarnings("unchecked") public AFunctionType getPostType(AOperationType type, AStateDefinition state, SClassDefinition classname, boolean isStatic) { PTypeList params = new PTypeList(); params.addAll((LinkedList<PType>) type.getParameters().clone()); if (!(type.getResult() instanceof AVoidType)) { params.add(type.getResult().clone()); } if (state != null) { params.add(AstFactory.newAUnresolvedType(state.getName())); params.add(AstFactory.newAUnresolvedType(state.getName())); } else if (classname != null) { AMapMapType map = AstFactory.newAMapMapType(type.getLocation(), AstFactory.newASeqSeqType(type.getLocation(), AstFactory.newACharBasicType(type.getLocation())), AstFactory.newAUnknownType(type.getLocation())); params.add(map); if (!isStatic) { params.add(AstFactory.newAUnresolvedType(classname.getName())); } } return AstFactory.newAFunctionType(type.getLocation(), false, params, AstFactory.newABooleanBasicType(type.getLocation())); }