private void setInheritedDefinitions(SClassDefinition definition) { List<PDefinition> indefs = new Vector<PDefinition>(); for (SClassDefinition sclass : definition.getSuperDefs()) { indefs.addAll(getInheritable(sclass)); } // The inherited definitions are ordered such that the // definitions, taken in order, will consider the overriding // members before others. List<PDefinition> superInheritedDefinitions = new Vector<PDefinition>(); for (PDefinition d : indefs) { superInheritedDefinitions.add(d); ILexNameToken localname = d.getName().getModifiedName(definition.getName().getName()); if (af.createPDefinitionListAssistant().findName(definition.getDefinitions(), localname, NameScope.NAMESANDSTATE) == null || af.createPDefinitionAssistant().isSubclassResponsibility(d)) { AInheritedDefinition local = AstFactory.newAInheritedDefinition(localname, d); definition.getLocalInheritedDefinitions().add(local); } } definition.setSuperInheritedDefinitions(superInheritedDefinitions); definition.setAllInheritedDefinitions(new Vector<PDefinition>()); definition.getAllInheritedDefinitions().addAll(superInheritedDefinitions); definition.getAllInheritedDefinitions().addAll(definition.getLocalInheritedDefinitions()); }
@Override public LexNameList caseAInheritedDefinition(AInheritedDefinition node) throws AnalysisException { // return AInheritedDefinitionAssistantTC.getVariableNames((AInheritedDefinition) node); LexNameList names = new LexNameList(); // TODO:What About Here, how to I need to handle it. like I have it or Bring the method to this class? DefinitionTypeFinder.checkSuperDefinition(node); for (ILexNameToken vn : node.getSuperdef().apply(THIS)) { names.add(vn.getModifiedName(node.getName().getModule())); } return names; }
public synchronized Value get(ILexNameToken field, boolean explicit) : field.getModifiedName(type.getName().getName());
ILexNameToken localname = d.getName().getModifiedName(def.getName().getName());
public Value getStatic(SClassDefinition classdef, ILexNameToken sought) { ILexNameToken local = sought.getExplicit() ? sought : sought.getModifiedName(classdef.getName().getName()); Value v = VdmRuntime.getNodeState(af, classdef).privateStaticValues.get(local); if (v == null) { v = VdmRuntime.getNodeState(af, classdef).publicStaticValues.get(local); if (v == null) { for (SClassDefinition sdef : classdef.getSuperDefs()) { v = getStatic(sdef, local); if (v != null) { break; } } } } return v; }
private void checkAmbiguities(SClassDefinition c, List<PDefinition> defs, List<PDefinition> defs2) { for (PDefinition indef : defs) { ILexNameToken localName = indef.getName().getModifiedName(c.getName().getName()); for (PDefinition indef2 : defs2) { if (!indef.getLocation().equals(indef2.getLocation()) && af.createPDefinitionAssistant().kind(indef).equals(af.createPDefinitionAssistant().kind(indef2))) { ILexNameToken localName2 = indef2.getName().getModifiedName(c.getName().getName()); if (af.getLexNameTokenAssistant().isEqual(localName, localName2)) { PDefinition override = af.createPDefinitionListAssistant().findName(c.getDefinitions(), localName, NameScope.NAMESANDSTATE); if (override == null) // OK if we override the ambiguity { TypeCheckerErrors.report(3276, "Ambiguous definitions inherited by " + c.getName().getName(), c.getLocation(), c); TypeCheckerErrors.detail("1", indef.getName() + " " + indef.getLocation()); TypeCheckerErrors.detail("2", indef2.getName() + " " + indef2.getLocation()); } } } } } }
ILexNameToken synthname = f.getName().getModifiedName(classname.getName()); PTypeSet current = null; optype.setPure(access.get(synthname).getPure()); ptype = optype; newname = synthname.getModifiedName(optype.getParameters()); newname = synthname.getModifiedName(ftype.getParameters());
@Override public NameValuePairList caseAInheritedDefinition(AInheritedDefinition def, Context initialContext) throws AnalysisException { NameValuePairList renamed = new NameValuePairList(); if (def.getSuperdef() instanceof AUntypedDefinition) { if (def.getClassDefinition() != null) { def.setSuperdef(af.createPDefinitionAssistant().findName(def.getClassDefinition(), def.getSuperdef().getName(), def.getNameScope())); } } for (NameValuePair nv : af.createPDefinitionAssistant().getNamedValues(def.getSuperdef(), initialContext)) { renamed.add(new NameValuePair(nv.name.getModifiedName(def.getName().getModule()), nv.value)); } return renamed; }
ILexNameToken adjfield = node.getField().getModifiedName(argTypes); ObjectValue obj = node.getDesignator().apply(VdmRuntime.getStatementEvaluator(), ctxt).objectValue(ctxt); Value v = obj.get(adjfield, node.getExplicit());
ILexNameToken localName = indef.getName().getModifiedName(c.getName().getName());
ILexNameToken iname = vname.getModifiedName(id.getSuperdef().getName().getModule()); Value v = initCtxt.check(iname);
ILexNameToken localname = idef.getName().getModifiedName(node.getName().getName());
if (sd != null && node.getName().getModule().equals("")) node.setName(name.getModifiedName(sd.getName().getName()));
for (ILexNameToken vn : getVariableNames(t.getSuperdef())) names.add(vn.getModifiedName(t.getName().getModule()));