Search in sources :

Example 36 with Issue

use of org.eclipse.xtext.validation.Issue in project xtext-xtend by eclipse.

the class XtendQuickfixProvider method removeUnnecessaryModifier.

@Fix(IssueCodes.UNNECESSARY_MODIFIER)
public void removeUnnecessaryModifier(final Issue issue, IssueResolutionAcceptor acceptor) {
    String[] issueData = issue.getData();
    if (issueData == null || issueData.length == 0) {
        return;
    }
    // use the same label, description and image
    // to be able to use the quickfixes (issue resolution) in batch mode
    String label = "Remove the unnecessary modifier.";
    String description = "The modifier is unnecessary and could be removed.";
    String image = "fix_indent.gif";
    acceptor.accept(issue, label, description, image, new ITextualMultiModification() {

        @Override
        public void apply(IModificationContext context) throws Exception {
            if (context instanceof IssueModificationContext) {
                Issue theIssue = ((IssueModificationContext) context).getIssue();
                Integer offset = theIssue.getOffset();
                IXtextDocument document = context.getXtextDocument();
                document.replace(offset, theIssue.getLength(), "");
                while (Character.isWhitespace(document.getChar(offset))) {
                    document.replace(offset, 1, "");
                }
            }
        }
    });
}
Also used : IssueModificationContext(org.eclipse.xtext.ui.editor.model.edit.IssueModificationContext) Issue(org.eclipse.xtext.validation.Issue) IModificationContext(org.eclipse.xtext.ui.editor.model.edit.IModificationContext) ITextualMultiModification(org.eclipse.xtext.ui.editor.model.edit.ITextualMultiModification) CoreException(org.eclipse.core.runtime.CoreException) BadLocationException(org.eclipse.jface.text.BadLocationException) IXtextDocument(org.eclipse.xtext.ui.editor.model.IXtextDocument) Fix(org.eclipse.xtext.ui.editor.quickfix.Fix)

Example 37 with Issue

use of org.eclipse.xtext.validation.Issue in project xtext-xtend by eclipse.

the class PartialParserTest method validateWithoutException.

protected void validateWithoutException(XtextResource resource) {
    ResourceValidatorImpl validator = resourceValidatorProvider.get();
    assertNotSame(validator, resource.getResourceServiceProvider().getResourceValidator());
    validator.setDiagnosticConverter(new IDiagnosticConverter() {

        @Override
        public void convertValidatorDiagnostic(org.eclipse.emf.common.util.Diagnostic diagnostic, IAcceptor<Issue> acceptor) {
            if (diagnostic instanceof BasicDiagnostic) {
                List<?> data = diagnostic.getData();
                if (!data.isEmpty() && data.get(0) instanceof Throwable) {
                    Throwable t = (Throwable) data.get(0);
                    // and AssertionError does not take a throwable as argument
                    throw new Error(t);
                }
                if (EObjectValidator.DIAGNOSTIC_SOURCE.equals(diagnostic.getSource()) && diagnostic.getCode() == EObjectValidator.EOBJECT__EVERY_REFERENCE_IS_CONTAINED) {
                    throw new Error(new RuntimeException("Dangling reference found."));
                }
            }
        }

        @Override
        public void convertResourceDiagnostic(Diagnostic diagnostic, Severity severity, IAcceptor<Issue> acceptor) {
            if (diagnostic instanceof ExceptionDiagnostic) {
                Exception e = ((ExceptionDiagnostic) diagnostic).getException();
                // and AssertionError does not take a throwable as argument
                throw new Error(new RuntimeException(e));
            }
        }
    });
    validator.validate(resource, CheckMode.ALL, CancelIndicator.NullImpl);
}
Also used : Issue(org.eclipse.xtext.validation.Issue) BasicDiagnostic(org.eclipse.emf.common.util.BasicDiagnostic) BasicDiagnostic(org.eclipse.emf.common.util.BasicDiagnostic) Diagnostic(org.eclipse.emf.ecore.resource.Resource.Diagnostic) ExceptionDiagnostic(org.eclipse.xtext.diagnostics.ExceptionDiagnostic) Severity(org.eclipse.xtext.diagnostics.Severity) IOException(java.io.IOException) ResourceValidatorImpl(org.eclipse.xtext.validation.ResourceValidatorImpl) IDiagnosticConverter(org.eclipse.xtext.validation.IDiagnosticConverter) ExceptionDiagnostic(org.eclipse.xtext.diagnostics.ExceptionDiagnostic) List(java.util.List)

Example 38 with Issue

use of org.eclipse.xtext.validation.Issue in project xtext-xtend by eclipse.

the class XImportSectionValidationTest method assertFeatureCallError.

public void assertFeatureCallError(final XtendFile file, final EClass objectType) {
    final Resource resource = file.eResource();
    final List<Issue> allIssues = this._validationTestHelper.validate(resource);
    final Function1<Issue, Boolean> _function = (Issue it) -> {
        EObject object = resource.getResourceSet().getEObject(it.getUriToProblem(), true);
        final boolean featureCall = ArrayExtensions.contains(it.getData(), UnresolvedFeatureCallTypeAwareMessageProvider.FEATURE_CALL);
        return Boolean.valueOf((((Objects.equal(it.getCode(), Diagnostic.LINKING_DIAGNOSTIC) && (it.getSeverity() == Severity.ERROR)) && objectType.isInstance(object)) && featureCall));
    };
    final Iterable<Issue> match = IterableExtensions.<Issue>filter(allIssues, _function);
    boolean _isEmpty = IterableExtensions.isEmpty(match);
    if (_isEmpty) {
        Assert.fail("No Diagnostic.LINKING_DIAGNOSTIC issue with user data FEATURE_CALL found");
    }
}
Also used : Issue(org.eclipse.xtext.validation.Issue) EObject(org.eclipse.emf.ecore.EObject) Resource(org.eclipse.emf.ecore.resource.Resource)

Example 39 with Issue

use of org.eclipse.xtext.validation.Issue in project xtext-xtend by eclipse.

the class XtendValidationTest method testRawTypeOnFieldFromTypeLiteral_02.

@Test
public void testRawTypeOnFieldFromTypeLiteral_02() throws Exception {
    String fileAsText = "class Foo { public val x = java.util.Map }";
    XtendFile file = file(fileAsText);
    helper.assertWarning(file, XTEND_FIELD, RAW_TYPE, "The inferred field type Class<Map> uses the raw type Map. References to generic type Map<K, V> should be parameterized");
    List<Issue> issues = helper.validate(file);
    assertEquals(1, issues.size());
    assertEquals(fileAsText.indexOf('x'), issues.get(0).getOffset().intValue());
    assertEquals(1, issues.get(0).getLength().intValue());
}
Also used : XtendFile(org.eclipse.xtend.core.xtend.XtendFile) Issue(org.eclipse.xtext.validation.Issue) Test(org.junit.Test)

Example 40 with Issue

use of org.eclipse.xtext.validation.Issue in project xtext-xtend by eclipse.

the class LinkingTest method testBug345433_01.

@Test
public void testBug345433_01() throws Exception {
    String classAsString = "import static extension org.eclipse.xtext.GrammarUtil.*\n" + "class Foo {" + "	org.eclipse.xtext.Grammar grammar\n" + "	def function1() {\n" + "		grammar.containedRuleCalls.filter(e | " + "			!e.isAssigned() && !e.isEObjectRuleCall()" + "		).map(e | e.rule)\n" + "	}\n" + "	def function2() {\n" + "		newArrayList(function1().head())\n" + "	}\n" + "}";
    XtendClass clazz = clazz(classAsString);
    IResourceValidator validator = ((XtextResource) clazz.eResource()).getResourceServiceProvider().getResourceValidator();
    List<Issue> issues = validator.validate(clazz.eResource(), CheckMode.ALL, CancelIndicator.NullImpl);
    assertTrue("Resource contained errors : " + issues.toString(), issues.isEmpty());
    XtendFunction function1 = (XtendFunction) clazz.getMembers().get(1);
    JvmOperation operation1 = associator.getDirectlyInferredOperation(function1);
    assertEquals("java.lang.Iterable<org.eclipse.xtext.AbstractRule>", operation1.getReturnType().getIdentifier());
    XtendFunction function2 = (XtendFunction) clazz.getMembers().get(2);
    JvmOperation operation2 = associator.getDirectlyInferredOperation(function2);
    assertEquals("java.util.ArrayList<org.eclipse.xtext.AbstractRule>", operation2.getReturnType().getIdentifier());
}
Also used : XtendFunction(org.eclipse.xtend.core.xtend.XtendFunction) JvmOperation(org.eclipse.xtext.common.types.JvmOperation) Issue(org.eclipse.xtext.validation.Issue) XtendClass(org.eclipse.xtend.core.xtend.XtendClass) IResourceValidator(org.eclipse.xtext.validation.IResourceValidator) Test(org.junit.Test)

Aggregations

Issue (org.eclipse.xtext.validation.Issue)105 Test (org.junit.Test)38 XtextResource (org.eclipse.xtext.resource.XtextResource)33 Resource (org.eclipse.emf.ecore.resource.Resource)21 IResourceValidator (org.eclipse.xtext.validation.IResourceValidator)18 URI (org.eclipse.emf.common.util.URI)16 List (java.util.List)14 XtextResourceSet (org.eclipse.xtext.resource.XtextResourceSet)12 IssueResolution (org.eclipse.xtext.ui.editor.quickfix.IssueResolution)12 XtendFile (org.eclipse.xtend.core.xtend.XtendFile)11 ArrayList (java.util.ArrayList)9 Severity (org.eclipse.xtext.diagnostics.Severity)9 IXtextDocument (org.eclipse.xtext.ui.editor.model.IXtextDocument)9 EObject (org.eclipse.emf.ecore.EObject)8 IOException (java.io.IOException)7 CoreException (org.eclipse.core.runtime.CoreException)7 ResourceSet (org.eclipse.emf.ecore.resource.ResourceSet)7 StringInputStream (org.eclipse.xtext.util.StringInputStream)7 Diagnostic (org.eclipse.emf.ecore.resource.Resource.Diagnostic)6 IssueResolutionAcceptor (org.eclipse.xtext.ui.editor.quickfix.IssueResolutionAcceptor)6