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;
}
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());
}
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;
}
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;
}
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);
}
Aggregations