@Override public PType caseAMapUnionPattern(AMapUnionPattern pattern) throws AnalysisException { return AstFactory.newAMapMapType(pattern.getLocation(), AstFactory.newAUnknownType(pattern.getLocation()), AstFactory.newAUnknownType(pattern.getLocation())); }
@Override public List<PDefinition> caseAMapUnionPattern(AMapUnionPattern pattern, NewQuestion question) throws AnalysisException { List<PDefinition> defs = new Vector<PDefinition>(); if (!af.createPTypeAssistant().isMap(question.ptype)) { TypeCheckerErrors.report(3315, "Matching expression is not a map type", pattern.getLocation(), pattern); } defs.addAll(af.createPPatternAssistant().getDefinitions(pattern.getLeft(), question.ptype, question.scope)); defs.addAll(af.createPPatternAssistant().getDefinitions(pattern.getRight(), question.ptype, question.scope)); return defs; }
} catch (ValueException e) VdmRuntimeError.patternFail(e, pattern.getLocation()); && size != llen + rlen) VdmRuntimeError.patternFail(4155, "Map union pattern does not match expression", pattern.getLocation()); VdmRuntimeError.patternFail(4126, "Values do not match union pattern", pattern.getLocation()); VdmRuntimeError.patternFail(4156, "Cannot match map pattern", pattern.getLocation());