@Override public PDefinition defaultPDefinition(PDefinition node, Newquestion question) throws AnalysisException { return af.createPDefinitionAssistant().findNameBaseCase(node, question.sought, question.scope); }
@Override public PDefinition caseATypeDefinition(ATypeDefinition node, Newquestion question) throws AnalysisException { if (!node.getComposeDefinitions().isEmpty()) { for (PDefinition compose : node.getComposeDefinitions()) { PDefinition found = af.createPDefinitionAssistant().findNameBaseCase(compose, question.sought, NameScope.TYPENAME); if (found != null) { return found; } } } return af.createPDefinitionAssistant().findNameBaseCase(node, question.sought, NameScope.TYPENAME); }
@Override public PDefinition caseAInstanceVariableDefinition( AInstanceVariableDefinition node, Newquestion question) throws AnalysisException { PDefinition found = af.createPDefinitionAssistant().findNameBaseCase(node, question.sought, question.scope); if (found != null) { return found; } return question.scope.matches(NameScope.OLDSTATE) && node.getOldname().equals(question.sought) ? node : null; }
@Override public PDefinition caseARenamedDefinition(ARenamedDefinition node, Newquestion question) throws AnalysisException { PDefinition renamed = af.createPDefinitionAssistant().findNameBaseCase(node, question.sought, question.scope); if (renamed != null) { af.createPDefinitionAssistant().markUsed(node.getDef()); return renamed; } else { // Renamed definitions hide the original name return null;// PDefinitionAssistantTC.findName(d.getDef(),sought, scope); } }
@Override public PDefinition caseAImplicitOperationDefinition( AImplicitOperationDefinition node, Newquestion question) throws AnalysisException { if (af.createPDefinitionAssistant().findNameBaseCase(node, question.sought, question.scope) != null) { return node; } if (Settings.dialect == Dialect.VDM_SL || Settings.release == Release.CLASSIC) { PDefinition predef = node.getPredef(); if (predef != null && predef.apply(this, question) != null) { return predef; } PDefinition postdef = node.getPostdef(); if (postdef != null && postdef.apply(this, question) != null) { return postdef; } } return null; }
@Override public PDefinition caseAExplicitOperationDefinition( AExplicitOperationDefinition node, Newquestion question) throws AnalysisException { if (af.createPDefinitionAssistant().findNameBaseCase(node, question.sought, question.scope) != null) { return node; } if (Settings.dialect == Dialect.VDM_SL || Settings.release == Release.CLASSIC) { PDefinition predef = node.getPredef(); if (predef != null && predef.apply(this, question) != null) { return predef; } PDefinition postdef = node.getPostdef(); if (postdef != null && postdef.apply(this, question) != null) { return postdef; } } return null; }
@Override public PDefinition caseAExplicitFunctionDefinition( AExplicitFunctionDefinition node, Newquestion question) throws AnalysisException { if (af.createPDefinitionAssistant().findNameBaseCase(node, question.sought, question.scope) != null) { return node; } PDefinition predef = node.getPredef(); if (predef != null && predef.apply(this, question) != null)// PDefinitionAssistantTC.findName(predef, sought, // scope) != null) { return predef; } PDefinition postdef = node.getPostdef(); if (postdef != null && postdef.apply(this, question) != null)// PDefinitionAssistantTC.findName(postdef, sought, // scope) != null) { return postdef; } PDefinition measureDef = node.getMeasureDef(); if (measureDef != null && measureDef.apply(this, question) != null) { return measureDef; } return null; }
@Override public PDefinition caseAImplicitFunctionDefinition( AImplicitFunctionDefinition node, Newquestion question) throws AnalysisException { if (af.createPDefinitionAssistant().findNameBaseCase(node, question.sought, question.scope) != null) { return node; } PDefinition predef = node.getPredef(); if (predef != null && predef.apply(this, question) != null)// PDefinitionAssistantTC.findName(predef, sought, // scope) != null) { return predef; } PDefinition postdef = node.getPostdef(); if (postdef != null && postdef.apply(this, question) != null) // PDefinitionAssistantTC.findName(postdef, // sought, scope) != null) { return postdef; } PDefinition measureDef = node.getMeasureDef(); if (measureDef != null && measureDef.apply(this, question) != null) { return measureDef; } return null; }