public List<List<PPattern>> getParamPatternList( AExplicitOperationDefinition func) { List<List<PPattern>> parameters = new ArrayList<List<PPattern>>(); List<PPattern> plist = new ArrayList<PPattern>(); for (PPattern p : func.getParameterPatterns()) { plist.add(p); } parameters.add(plist); return parameters; }
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); }
public POOperationDefinitionContext( AExplicitOperationDefinition definition, boolean precond, PDefinition stateDefinition) { this.name = definition.getName(); this.deftype = (AOperationType) definition.getType(); this.addPrecond = precond; this.paramPatternList = cloneList(definition.getParameterPatterns()); this.precondition = definition.getPrecondition(); this.stateDefinition = stateDefinition; this.opDef = definition; }
private OperationValue(AExplicitOperationDefinition def, FunctionValue precondition, FunctionValue postcondition, AStateDefinition state, boolean async) { this.expldef = def; this.impldef = null; this.name = def.getName(); this.type = (AOperationType) def.getType(); this.paramPatterns = def.getParameterPatterns(); this.body = def.getBody(); this.precondition = precondition; this.postcondition = postcondition; this.state = state; this.classdef = def.getClassDefinition(); this.isAsync = async; traceRT = Settings.dialect == Dialect.VDM_RT && classdef != null && !(classdef instanceof ASystemClassDefinition) && !classdef.getName().getName().equals("CPU") && !classdef.getName().getName().equals("BUS") && !name.getName().equals("thread") && !name.getName().startsWith("inv_"); }
&& op.getParameterPatterns().isEmpty())
plist = e.getParameterPatterns();
+ d.getName() + "(" + Utils.listToString(d.getParameterPatterns()) + ")" + (d.getBody() == null ? "" : " ==\n"
LinkedList<PPattern> paramPatterns = node.getParameterPatterns();
public static String getExplicitOperationString( AExplicitOperationDefinition d) { return d.getName() + " " + d.getType() + "\n\t" + d.getName() + "(" + Utils.listToString(d.getParameterPatterns()) + ")" + (d.getBody() == null ? "" : " ==\n" + d.getBody()) + (d.getPrecondition() == null ? "" : "\n\tpre " + d.getPrecondition()) + (d.getPostcondition() == null ? "" : "\n\tpost " + d.getPostcondition()); }
@SuppressWarnings("unchecked") public AExplicitFunctionDefinition getPreDefinition( AExplicitOperationDefinition d, Environment base) { List<List<PPattern>> parameters = new Vector<List<PPattern>>(); List<PPattern> plist = new Vector<PPattern>(); plist.addAll((List<PPattern>) d.getParameterPatterns().clone()); if (d.getState() != null) { plist.add(AstFactory.newAIdentifierPattern(d.getState().getName().clone())); } else if (base.isVDMPP() && !af.createPAccessSpecifierAssistant().isStatic(d.getAccess())) { plist.add(AstFactory.newAIdentifierPattern(d.getName().getSelfName())); } parameters.add(plist); APreOpExp preop = AstFactory.newAPreOpExp(d.getName().clone(), d.getPrecondition(), null, d.getState()); AExplicitFunctionDefinition def = AstFactory.newAExplicitFunctionDefinition(d.getName().getPreName(d.getPrecondition().getLocation()), NameScope.GLOBAL, null, af.createAOperationTypeAssistant().getPreType((AOperationType) d.getType(), d.getState(), d.getClassDefinition(), af.createPAccessSpecifierAssistant().isStatic(d.getAccess())), parameters, preop, null, null, false, null); // Operation precondition functions are effectively not static as // their expression can directly refer to instance variables, even // though at runtime these are passed via a "self" parameter. def.setAccess(af.createPAccessSpecifierAssistant().getStatic(def, false)); def.setClassDefinition(d.getClassDefinition()); return def; }
List<PPattern> copy = new ArrayList<PPattern>(node.getParameterPatterns()); for( PPattern e : copy)
List<PPattern> copy = new ArrayList<PPattern>(node.getParameterPatterns()); for( PPattern e : copy)
List<PPattern> copy = new ArrayList<PPattern>(node.getParameterPatterns()); for( PPattern e : copy)
plist.addAll((List<PPattern>) d.getParameterPatterns().clone());
List<PPattern> copy = new ArrayList<PPattern>(node.getParameterPatterns()); for( PPattern e : copy)
List<PPattern> copy = new ArrayList<PPattern>(node.getParameterPatterns()); for( PPattern e : copy)
|| !edef.getParameterPatterns().isEmpty())
@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); } }
PatternAlwaysMatchesVisitor amVisitor = new PatternAlwaysMatchesVisitor(); for (PPattern p : node.getParameterPatterns())
List<PType> ptypes = ((AOperationType) node.getType()).getParameters(); if (node.getParameterPatterns().size() > ptypes.size()) TypeCheckerErrors.detail2("Type params", ptypes.size(), "Patterns", node.getParameterPatterns().size()); return null; } else if (node.getParameterPatterns().size() < ptypes.size()) TypeCheckerErrors.detail2("Type params", ptypes.size(), "Patterns", node.getParameterPatterns().size()); return null;