@Override public PType caseAMapPattern(AMapPattern pattern) throws AnalysisException { return AstFactory.newAMapMapType(pattern.getLocation(), AstFactory.newAUnknownType(pattern.getLocation()), AstFactory.newAUnknownType(pattern.getLocation())); }
} catch (ValueException e) VdmRuntimeError.patternFail(e, pattern.getLocation()); VdmRuntimeError.patternFail(4152, "Wrong number of elements for map pattern", pattern.getLocation()); VdmRuntimeError.patternFail(4153, "Values do not match map pattern", pattern.getLocation()); VdmRuntimeError.patternFail(4154, "Cannot match map pattern", pattern.getLocation());
@Override public List<PDefinition> caseAMapPattern(AMapPattern pattern, NewQuestion question) throws AnalysisException { List<PDefinition> defs = new Vector<PDefinition>(); if (!af.createPTypeAssistant().isMap(question.ptype)) { TypeCheckerErrors.report(3314, "Map pattern is not matched against map type", pattern.getLocation(), pattern); TypeCheckerErrors.detail("Actual type", question.ptype); } else { SMapType map = af.createPTypeAssistant().getMap(question.ptype); if (!map.getEmpty()) { for (AMapletPatternMaplet p : pattern.getMaplets()) { defs.addAll(getDefinitions(p, map, question.scope)); // defs.addAll(p.apply(THIS, question)); } } } return defs; }