Search in sources :

Example 66 with Issue

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());
        }
    }
}
Also used : Issue(org.eclipse.xtext.validation.Issue) MWEDiagnostic(org.eclipse.emf.mwe.core.issues.MWEDiagnostic) URI(org.eclipse.emf.common.util.URI)

Example 67 with Issue

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;
}
Also used : Function(com.google.common.base.Function) Issue(org.eclipse.xtext.validation.Issue) MWEDiagnostic(org.eclipse.emf.mwe.core.issues.MWEDiagnostic) Collection(java.util.Collection) URI(org.eclipse.emf.common.util.URI)

Example 68 with Issue

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"));
}
Also used : Issue(org.eclipse.xtext.validation.Issue) Issues(org.eclipse.emf.mwe.core.issues.Issues) MWEDiagnostic(org.eclipse.emf.mwe.core.issues.MWEDiagnostic) Test(org.junit.Test)

Example 69 with Issue

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());
}
Also used : Issue(org.eclipse.xtext.validation.Issue) IResourceValidator(org.eclipse.xtext.validation.IResourceValidator) XtextResource(org.eclipse.xtext.resource.XtextResource) Test(org.junit.Test)

Example 70 with Issue

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());
}
Also used : Assignment(org.eclipse.xtext.Assignment) Issue(org.eclipse.xtext.validation.Issue) IResourceValidator(org.eclipse.xtext.validation.IResourceValidator) XtextResource(org.eclipse.xtext.resource.XtextResource) Grammar(org.eclipse.xtext.Grammar) AbstractRule(org.eclipse.xtext.AbstractRule) RuleCall(org.eclipse.xtext.RuleCall) Test(org.junit.Test)

Aggregations

Issue (org.eclipse.xtext.validation.Issue)108 Test (org.junit.Test)40 XtextResource (org.eclipse.xtext.resource.XtextResource)35 Resource (org.eclipse.emf.ecore.resource.Resource)23 List (java.util.List)20 IResourceValidator (org.eclipse.xtext.validation.IResourceValidator)20 URI (org.eclipse.emf.common.util.URI)16 ArrayList (java.util.ArrayList)12 XtextResourceSet (org.eclipse.xtext.resource.XtextResourceSet)12 IFile (org.eclipse.core.resources.IFile)11 XtendFile (org.eclipse.xtend.core.xtend.XtendFile)11 IXtextDocument (org.eclipse.xtext.ui.editor.model.IXtextDocument)11 IssueResolution (org.eclipse.xtext.ui.editor.quickfix.IssueResolution)11 XtextEditor (org.eclipse.xtext.ui.editor.XtextEditor)10 Severity (org.eclipse.xtext.diagnostics.Severity)9 IOException (java.io.IOException)8 CoreException (org.eclipse.core.runtime.CoreException)8 ResourceSet (org.eclipse.emf.ecore.resource.ResourceSet)8 StringInputStream (org.eclipse.xtext.util.StringInputStream)8 EObject (org.eclipse.emf.ecore.EObject)6