use of org.eclipse.xtext.validation.Issue in project xtext-core by eclipse.
the class Validator method appendMessages.
protected void appendMessages(StringBuilder result, MWEDiagnostic[] diagnostics) {
Multimap<URI, MWEDiagnostic> issuesPerURI = groupByURI(diagnostics);
boolean first = true;
for (URI uri : issuesPerURI.keySet()) {
if (!first)
result.append('\n');
first = false;
if (uri != null) {
result.append('\t').append(uri.lastSegment()).append(" - ");
if (uri.isFile())
result.append(uri.toFileString());
else
result.append(uri);
}
for (MWEDiagnostic diagnostic : issuesPerURI.get(uri)) {
Issue issue = (Issue) diagnostic.getElement();
result.append("\n\t\t").append(issue.getLineNumber()).append(": ").append(diagnostic.getMessage());
}
}
}
use of org.eclipse.xtext.validation.Issue in project xtext-core by eclipse.
the class Validator method groupByURI.
protected Multimap<URI, MWEDiagnostic> groupByURI(MWEDiagnostic[] diagnostic) {
Multimap<URI, MWEDiagnostic> result = Multimaps.newMultimap(Maps.<URI, Collection<MWEDiagnostic>>newLinkedHashMap(), new Supplier<Collection<MWEDiagnostic>>() {
@Override
public Collection<MWEDiagnostic> get() {
return Sets.newTreeSet(getDiagnosticComparator());
}
});
result.putAll(Multimaps.index(Arrays.asList(diagnostic), new Function<MWEDiagnostic, URI>() {
@Override
public URI apply(MWEDiagnostic from) {
Issue issue = (Issue) from.getElement();
URI uriToProblem = issue.getUriToProblem();
return uriToProblem != null ? uriToProblem.trimFragment() : NullURI;
}
}));
return result;
}
use of org.eclipse.xtext.validation.Issue in project xtext-core by eclipse.
the class ValidatorTest method testBugFix322645.
/**
* https://bugs.eclipse.org/bugs/show_bug.cgi?id=322645
*/
@Test
public void testBugFix322645() throws Exception {
Issues issues = issues();
Issue a = new Issue.IssueImpl();
Issue b = new Issue.IssueImpl();
issues.addError("foo", a);
issues.addWarning(null, a);
issues.addError(null, b);
MWEDiagnostic[] errors = issues.getErrors();
assertEquals(2, errors.length);
final Validator validator = new Validator();
final String string = validator.toString(issues);
assert (string.contains("foo"));
}
use of org.eclipse.xtext.validation.Issue in project xtext-core by eclipse.
the class XtextValidationTest method testOutOfSequenceArgument_02.
@Test
public void testOutOfSequenceArgument_02() throws Exception {
XtextResource resource = getResourceFromString("grammar com.acme.Bar with org.eclipse.xtext.common.Terminals\n" + "generate metamodel 'myURI'\n" + "Model: rule=Rule<true, B=false, C=true>;\n" + "Rule<A, B, C>: name=ID;");
IResourceValidator validator = get(IResourceValidator.class);
List<Issue> issues = validator.validate(resource, CheckMode.FAST_ONLY, CancelIndicator.NullImpl);
assertEquals(issues.toString(), 0, issues.size());
}
use of org.eclipse.xtext.validation.Issue in project xtext-core by eclipse.
the class XtextValidationTest method testRuleCalledSuper.
@Test
public void testRuleCalledSuper() throws Exception {
XtextResource resource = getResourceFromString("grammar com.acme.Bar with org.eclipse.xtext.common.Terminals\n" + "generate metamodel 'myURI'\n" + "Model: super=super;\n" + "super: name=ID;");
IResourceValidator validator = get(IResourceValidator.class);
List<Issue> issues = validator.validate(resource, CheckMode.FAST_ONLY, CancelIndicator.NullImpl);
assertEquals(issues.toString(), 1, issues.size());
assertEquals("Discouraged rule name 'super'", issues.get(0).getMessage());
Grammar grammar = (Grammar) resource.getContents().get(0);
AbstractRule model = grammar.getRules().get(0);
Assignment assignment = (Assignment) model.getAlternatives();
RuleCall ruleCall = (RuleCall) assignment.getTerminal();
assertSame(grammar.getRules().get(1), ruleCall.getRule());
}
Aggregations