@Override public Boolean caseAImplicitOperationDefinition( AImplicitOperationDefinition node) throws AnalysisException { return node.getBody() != null; }
private OperationValue(AImplicitOperationDefinition def, FunctionValue precondition, FunctionValue postcondition, AStateDefinition state, boolean async) { this.impldef = def; this.expldef = null; this.name = def.getName(); this.type = (AOperationType) def.getType(); this.paramPatterns = new Vector<PPattern>(); for (APatternListTypePair ptp : def.getParameterPatterns()) { paramPatterns.addAll(ptp.getPatterns()); } 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"); }
public boolean isSubclassResponsibility(PDefinition d) { while (d instanceof AInheritedDefinition) { AInheritedDefinition aid = (AInheritedDefinition) d; d = aid.getSuperdef(); } if (d instanceof AExplicitOperationDefinition) { AExplicitOperationDefinition op = (AExplicitOperationDefinition) d; return op.getBody() instanceof ASubclassResponsibilityStm; } else if (d instanceof AImplicitOperationDefinition) { AImplicitOperationDefinition op = (AImplicitOperationDefinition) d; return op.getBody() instanceof ASubclassResponsibilityStm; } else if (d instanceof AExplicitFunctionDefinition) { AExplicitFunctionDefinition fn = (AExplicitFunctionDefinition) d; return fn.getBody() instanceof ASubclassResponsibilityExp; } else if (d instanceof AImplicitFunctionDefinition) { AImplicitFunctionDefinition fn = (AImplicitFunctionDefinition) d; return fn.getBody() instanceof ASubclassResponsibilityExp; } return false; }
@Override public LexNameSet caseAImplicitOperationDefinition(AImplicitOperationDefinition node, FreeVarInfo info) throws AnalysisException { List<PDefinition> defs = new Vector<PDefinition>(); for (APatternListTypePair pltp : node.getParameterPatterns()) { defs.addAll(getDefinitions(pltp, NameScope.LOCAL)); } FreeVarInfo local = info.set(new FlatEnvironment(af, defs, info.env)); LexNameSet names = new LexNameSet(); if (node.getBody() != null) { names.addAll(node.getBody().apply(this, local)); } if (node.getPredef() != null) { names.addAll(node.getPredef().apply(this, local)); } if (node.getPostdef() != null) { names.addAll(node.getPostdef().apply(this, local)); } return names; }
if (idef.getBody() == null)
if (def.getBody() == null)
if (def.getBody() == null)
if (node.getBody() != null) node.setActualResult(node.getBody().apply(THIS, new TypeCheckInfo(question.assistantFactory, local, NameScope.NAMESANDSTATE, null, null, expectedResult))); && node.getBody() instanceof ASubclassResponsibilityStm) if (!(node.getBody() instanceof ANotYetSpecifiedStm) && !(node.getBody() instanceof ASubclassResponsibilityStm))