aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorPhilipp Eichhorn <peichhor@web.de>2011-06-05 22:14:50 +0200
committerPhilipp Eichhorn <peichhor@web.de>2011-06-05 22:14:50 +0200
commit476b198f168223f1e30a5a4fa97e27cc2b9ea008 (patch)
treea15ae5731bd49a74e0a8283619438ca93da6b5db /test
parent964b82124dd92e91652925a450ab9208e41df601 (diff)
downloadlombok-476b198f168223f1e30a5a4fa97e27cc2b9ea008.tar.gz
lombok-476b198f168223f1e30a5a4fa97e27cc2b9ea008.tar.bz2
lombok-476b198f168223f1e30a5a4fa97e27cc2b9ea008.zip
Allow "before" to be used as a source-package for eclipse tests (see LoggerSlf4jWithPackage).
Diffstat (limited to 'test')
-rw-r--r--test/core/src/lombok/RunTestsViaEclipse.java40
-rw-r--r--test/transform/resource/after-eclipse/LoggerSlf4jWithPackage.java23
-rw-r--r--test/transform/resource/messages-eclipse/LoggerSlf4jOnNonType.java.messages3
3 files changed, 50 insertions, 16 deletions
diff --git a/test/core/src/lombok/RunTestsViaEclipse.java b/test/core/src/lombok/RunTestsViaEclipse.java
index 03f205ba..82df9c91 100644
--- a/test/core/src/lombok/RunTestsViaEclipse.java
+++ b/test/core/src/lombok/RunTestsViaEclipse.java
@@ -66,29 +66,37 @@ public class RunTestsViaEclipse extends AbstractRunTests {
}
@Override public void transformCode(final StringBuilder messages, StringWriter result, File file) throws Throwable {
- String source = readFile(file);
- CompilationUnit sourceUnit = new CompilationUnit(source.toCharArray(), file.getName(), "UTF-8");
- IErrorHandlingPolicy policy = DefaultErrorHandlingPolicies.proceedWithAllProblems();
- IProblemFactory problemFactory = new DefaultProblemFactory(Locale.ENGLISH);
- INameEnvironment nameEnvironment = new LombokTestNameEnvironment();
- ICompilerRequestor compilerRequestor = new LombokTestCompilerRequestor();
- CompilerOptions options = ecjCompilerOptions();
+ // setup parser and compiler
+ final IErrorHandlingPolicy policy = DefaultErrorHandlingPolicies.proceedWithAllProblems();
+ final IProblemFactory problemFactory = new DefaultProblemFactory(Locale.ENGLISH);
+ final INameEnvironment nameEnvironment = new LombokTestNameEnvironment();
+ final ICompilerRequestor compilerRequestor = new LombokTestCompilerRequestor();
+ final ISourceElementRequestor sourceElementRequestor = new LombokTestSourceElementRequestor();
+ final CompilerOptions options = ecjCompilerOptions();
+ final LombokTestCompiler jdtCompiler = new LombokTestCompiler(nameEnvironment, policy, options, compilerRequestor, problemFactory);
+ final SourceElementParser parser = new SourceElementParser(sourceElementRequestor, problemFactory, options, true, true);
+ // read the file
+ final String source = readFile(file);
+ final CompilationUnit sourceUnit = new CompilationUnit(source.toCharArray(), file.getName(), "UTF-8");
- ISourceElementRequestor sourceElementRequestor = new LombokTestSourceElementRequestor();
- SourceElementParser parser = new SourceElementParser(sourceElementRequestor, problemFactory, options, true, true);
- final CompilationUnitDeclaration cud = parser.parseCompilationUnit(sourceUnit, true, null);
- final LombokTestCompiler jdtCompiler = new LombokTestCompiler(nameEnvironment, policy, options, compilerRequestor, problemFactory);
+ // parse
+ final CompilationUnitDeclaration cud = parser.parseCompilationUnit(sourceUnit, true, null);
+ // build
jdtCompiler.lookupEnvironment.buildTypeBindings(cud, null);
jdtCompiler.lookupEnvironment.completeTypeBindings(cud, true);
+ // process
+ if (cud.scope != null) cud.scope.verifyMethods(jdtCompiler.lookupEnvironment.methodVerifier());
- CategorizedProblem[] problems = cud.compilationResult.getAllProblems();
+ // handle problems
+ final CategorizedProblem[] problems = cud.compilationResult.getAllProblems();
if (problems != null) for (CategorizedProblem p : problems) {
messages.append(String.format("%d %s %s\n", p.getSourceLineNumber(), p.isError() ? "error" : p.isWarning() ? "warning" : "unknown", p.getMessage()));
}
+ // set transformed code
result.append(cud.toString());
}
@@ -217,6 +225,10 @@ public class RunTestsViaEclipse extends AbstractRunTests {
private static class LombokTestNameEnvironment implements INameEnvironment {
Map<String, Boolean> packagesCache = new HashMap<String, Boolean>();
+ public LombokTestNameEnvironment() {
+ packagesCache.put("before", true);
+ }
+
public NameEnvironmentAnswer findType(final char[][] compoundTypeName) {
final StringBuffer result = new StringBuffer();
for (int i = 0; i < compoundTypeName.length; i++) {
@@ -289,8 +301,8 @@ public class RunTestsViaEclipse extends AbstractRunTests {
if (packagesCache.containsKey(name)) {
return packagesCache.get(name).booleanValue();
}
- byte[] bytes = getClassDefinition(name);
- if (bytes != null) {
+
+ if (name.startsWith("before") || (getClassDefinition(name) != null)) {
packagesCache.put(name, false);
return false;
}
diff --git a/test/transform/resource/after-eclipse/LoggerSlf4jWithPackage.java b/test/transform/resource/after-eclipse/LoggerSlf4jWithPackage.java
index cb06d3c1..6d395db8 100644
--- a/test/transform/resource/after-eclipse/LoggerSlf4jWithPackage.java
+++ b/test/transform/resource/after-eclipse/LoggerSlf4jWithPackage.java
@@ -1 +1,22 @@
-//ignore \ No newline at end of file
+package before;
+@lombok.extern.slf4j.Slf4j class LoggerSlf4jWithPackage {
+ private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LoggerSlf4jWithPackage.class);
+ <clinit>() {
+ }
+ LoggerSlf4jWithPackage() {
+ super();
+ }
+}
+class LoggerSlf4jWithPackageOuter {
+ static @lombok.extern.slf4j.Slf4j class Inner {
+ private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(Inner.class);
+ <clinit>() {
+ }
+ Inner() {
+ super();
+ }
+ }
+ LoggerSlf4jWithPackageOuter() {
+ super();
+ }
+} \ No newline at end of file
diff --git a/test/transform/resource/messages-eclipse/LoggerSlf4jOnNonType.java.messages b/test/transform/resource/messages-eclipse/LoggerSlf4jOnNonType.java.messages
index 4a446f28..4af47f01 100644
--- a/test/transform/resource/messages-eclipse/LoggerSlf4jOnNonType.java.messages
+++ b/test/transform/resource/messages-eclipse/LoggerSlf4jOnNonType.java.messages
@@ -1 +1,2 @@
-2 error @Log is legal only on types. \ No newline at end of file
+2 error @Log is legal only on types.
+2 error The annotation @Slf4j is disallowed for this location \ No newline at end of file