}
// if (s instanceof RutaFeatureDeclaration) {
// RutaFeatureDeclaration fd = (RutaFeatureDeclaration) s;
// }
if (s instanceof RutaTypeDeclaration) {
RutaTypeDeclaration newType = (RutaTypeDeclaration) s;
if (reportWarningOnShortNames && shortTypes.contains(newType.getName())) {
IProblem problem = problemFactory.createDuplicateShortName(newType,
ProblemSeverity.WARNING);
rep.reportProblem(problem);
return false;
}
String longName = getLongLocalName(newType.getName());
if (completeTypes.contains(longName)) {
IProblem problem = problemFactory.createIdConflictsWithTypeProblem(newType);
rep.reportProblem(problem);
return false;
}
if (typeVariables.contains(newType.getName()) || otherVariables.contains(newType.getName())) {
IProblem problem = problemFactory.createIdConflictsWithVariableProblem(newType);
rep.reportProblem(problem);
return false;
}
List<RutaFeatureDeclaration> features = newType.getFeatures();
if (features != null) {
for (RutaFeatureDeclaration each : features) {
String type = each.getType();
if (type.equals("INT") || type.equals("STRING") || type.equals("DOUBLE")
|| type.equals("FLOAT") || type.equals("BOOLEAN")) {
continue;
}
if (!shortTypes.contains(type) && !completeTypes.contains(type)
&& !otherTypes.contains(type)) {
IProblem problem = problemFactory.createUnknownFeatureTypeProblem(each);
rep.reportProblem(problem);
}
}
}
String[] nameSplit = newType.getName().split("[.]");
String shortName = nameSplit[nameSplit.length - 1];
completeTypes.add(longName);
shortTypes.add(shortName);
return false;