Search in sources :

Example 81 with Issue

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

the class RichStringEvaluationTest method file.

protected XtendFile file(String string, boolean validate) throws Exception {
    XtextResourceSet set = resourceSetProvider.get();
    Map<Object, Object> loadOptions = set.getLoadOptions();
    loadOptions.put(XtextResource.OPTION_ENCODING, StandardCharsets.ISO_8859_1.name());
    String fileName = getFileName(string);
    Resource resource = set.createResource(URI.createURI(fileName + ".xtend"));
    resource.load(new LazyStringInputStream(string, StandardCharsets.ISO_8859_1.name()), loadOptions);
    assertEquals(resource.getErrors().toString(), 0, resource.getErrors().size());
    if (validate) {
        List<Issue> issues = ((XtextResource) resource).getResourceServiceProvider().getResourceValidator().validate(resource, CheckMode.ALL, CancelIndicator.NullImpl);
        assertTrue("Resource contained errors : " + issues.toString(), issues.isEmpty());
    }
    XtendFile file = (XtendFile) resource.getContents().get(0);
    return file;
}
Also used : XtendFile(org.eclipse.xtend.core.xtend.XtendFile) Issue(org.eclipse.xtext.validation.Issue) XtextResourceSet(org.eclipse.xtext.resource.XtextResourceSet) XtextResource(org.eclipse.xtext.resource.XtextResource) Resource(org.eclipse.emf.ecore.resource.Resource) LazyStringInputStream(org.eclipse.xtext.util.LazyStringInputStream) XtextResource(org.eclipse.xtext.resource.XtextResource) RichString(org.eclipse.xtend.core.xtend.RichString)

Example 82 with Issue

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

the class XtendIncrementalBuilderTest method testDelete_01.

@Test
public void testDelete_01() {
    final Procedure1<BuildRequest> _function = (BuildRequest it) -> {
        StringConcatenation _builder = new StringConcatenation();
        _builder.append("class A {");
        _builder.newLine();
        _builder.append("\t");
        _builder.append("public foo.B myField");
        _builder.newLine();
        _builder.append("}");
        _builder.newLine();
        URI _minus = this.operator_minus("src/A.xtend", _builder.toString());
        StringConcatenation _builder_1 = new StringConcatenation();
        _builder_1.append("package foo");
        _builder_1.newLine();
        _builder_1.append("class B {");
        _builder_1.newLine();
        _builder_1.append("}");
        _builder_1.newLine();
        URI _minus_1 = this.operator_minus("src/foo/B.xtend", _builder_1.toString());
        it.setDirtyFiles(Collections.<URI>unmodifiableList(CollectionLiterals.<URI>newArrayList(_minus, _minus_1)));
    };
    this.build(this.newBuildRequest(_function));
    final AtomicBoolean validateCalled = new AtomicBoolean(false);
    final Procedure1<BuildRequest> _function_1 = (BuildRequest it) -> {
        URI _delete = this.delete(this.uri("src/foo/B.xtend"));
        it.setDeletedFiles(Collections.<URI>unmodifiableList(CollectionLiterals.<URI>newArrayList(_delete)));
        final BuildRequest.IPostValidationCallback _function_2 = (URI uri, Iterable<Issue> issues) -> {
            URI _uri = this.uri("src/A.xtend");
            boolean _equals = Objects.equal(_uri, uri);
            if (_equals) {
                Assert.assertTrue(IterableExtensions.<Issue>head(issues).getMessage(), IterableExtensions.<Issue>head(issues).getMessage().contains("foo.B cannot be resolved to a type"));
                validateCalled.set(true);
                return false;
            } else {
                URI _uri_1 = this.uri("src/foo/B.xtend");
                boolean _equals_1 = Objects.equal(_uri_1, uri);
                if (_equals_1) {
                    Assert.assertEquals("zero issues expected", 0, IterableExtensions.size(issues));
                    return true;
                } else {
                    throw new IllegalStateException(("unexpected issues for " + uri));
                }
            }
        };
        it.setAfterValidate(_function_2);
    };
    this.build(this.newBuildRequest(_function_1));
    Assert.assertTrue(validateCalled.get());
}
Also used : AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) Issue(org.eclipse.xtext.validation.Issue) StringConcatenation(org.eclipse.xtend2.lib.StringConcatenation) BuildRequest(org.eclipse.xtext.build.BuildRequest) URI(org.eclipse.emf.common.util.URI) AbstractIncrementalBuilderTest(org.eclipse.xtext.testing.builder.AbstractIncrementalBuilderTest) Test(org.junit.Test)

Example 83 with Issue

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

the class XtendBatchCompiler method validate.

protected List<Issue> validate(ResourceSet resourceSet) {
    List<Issue> issues = Lists.newArrayList();
    List<Resource> resources = Lists.newArrayList(resourceSet.getResources());
    for (Resource resource : resources) {
        IResourceServiceProvider resourceServiceProvider = IResourceServiceProvider.Registry.INSTANCE.getResourceServiceProvider(resource.getURI());
        if (resourceServiceProvider != null && isSourceFile(resource)) {
            IResourceValidator resourceValidator = resourceServiceProvider.getResourceValidator();
            List<Issue> result = resourceValidator.validate(resource, CheckMode.ALL, null);
            addAll(issues, result);
        }
    }
    return issues;
}
Also used : IResourceServiceProvider(org.eclipse.xtext.resource.IResourceServiceProvider) Issue(org.eclipse.xtext.validation.Issue) IResourceValidator(org.eclipse.xtext.validation.IResourceValidator) Resource(org.eclipse.emf.ecore.resource.Resource) StorageAwareResource(org.eclipse.xtext.resource.persistence.StorageAwareResource) XtextResource(org.eclipse.xtext.resource.XtextResource) BatchLinkableResource(org.eclipse.xtext.xbase.resource.BatchLinkableResource)

Example 84 with Issue

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

the class XtendBatchCompiler method compile.

public boolean compile() {
    try {
        if (!checkConfiguration()) {
            return false;
        }
        ResourceSet resourceSet = resourceSetProvider.get();
        if (!configureWorkspace(resourceSet)) {
            return false;
        }
        generatorConfigProvider.install(resourceSet, generatorConfig);
        File classDirectory = createTempDir("classes");
        try {
            compilerPhases.setIndexing(resourceSet, true);
            // install a type provider without index lookup for the first phase
            installJvmTypeProvider(resourceSet, classDirectory, true);
            loadXtendFiles(resourceSet);
            File sourceDirectory = createStubs(resourceSet);
            if (!preCompileStubs(sourceDirectory, classDirectory)) {
                log.warn("Compilation of stubs had errors.");
            }
            if (!preCompileJava(sourceDirectory, classDirectory)) {
                log.debug("Compilation of Java code against stubs had errors. This is expected and usually is not a probblem.");
            }
        } finally {
            compilerPhases.setIndexing(resourceSet, false);
        }
        // install a fresh type provider for the second phase, so we clear all previously cached classes and misses.
        installJvmTypeProvider(resourceSet, classDirectory, false);
        List<Resource> toBeResolved = new ArrayList<>(resourceSet.getResources().size());
        for (Resource resource : resourceSet.getResources()) {
            if (isSourceFile(resource)) {
                toBeResolved.add(resource);
            }
        }
        for (Resource resource : toBeResolved) {
            EcoreUtil.resolveAll(resource);
        }
        List<Issue> issues = validate(resourceSet);
        Iterable<Issue> errors = Iterables.filter(issues, SeverityFilter.ERROR);
        Iterable<Issue> warnings = Iterables.filter(issues, SeverityFilter.WARNING);
        reportIssues(Iterables.concat(errors, warnings));
        if (!Iterables.isEmpty(errors)) {
            return false;
        }
        generateJavaFiles(resourceSet);
    } finally {
        destroyClassLoader(jvmTypesClassLoader);
        destroyClassLoader(annotationProcessingClassLoader);
        if (isDeleteTempDirectory()) {
            deleteTmpFolders();
        }
    }
    return true;
}
Also used : Issue(org.eclipse.xtext.validation.Issue) Resource(org.eclipse.emf.ecore.resource.Resource) StorageAwareResource(org.eclipse.xtext.resource.persistence.StorageAwareResource) XtextResource(org.eclipse.xtext.resource.XtextResource) BatchLinkableResource(org.eclipse.xtext.xbase.resource.BatchLinkableResource) ArrayList(java.util.ArrayList) ResourceSet(org.eclipse.emf.ecore.resource.ResourceSet) XtextResourceSet(org.eclipse.xtext.resource.XtextResourceSet) XtendFile(org.eclipse.xtend.core.xtend.XtendFile) File(java.io.File)

Example 85 with Issue

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

the class LinkingErrorTest 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);
                }
            }
        }

        @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) ResourceValidatorImpl(org.eclipse.xtext.validation.ResourceValidatorImpl) IDiagnosticConverter(org.eclipse.xtext.validation.IDiagnosticConverter) ExceptionDiagnostic(org.eclipse.xtext.diagnostics.ExceptionDiagnostic) List(java.util.List)

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