mirror of
https://github.com/tiennm99/lombok.git
synced 2026-10-03 05:20:17 +00:00
Allow "before" to be used as a source-package for eclipse tests (see LoggerSlf4jWithPackage).
This commit is contained in:
1 parent
964b82124d
commit
476b198f16
3 files changed
+52
-18
No files matched your search
@@ -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();
|
||||
|
||||
|
||||
ISourceElementRequestor sourceElementRequestor = new LombokTestSourceElementRequestor();
|
||||
SourceElementParser parser = new SourceElementParser(sourceElementRequestor, problemFactory, options, true, true);
|
||||
final CompilationUnitDeclaration cud = parser.parseCompilationUnit(sourceUnit, true, null);
|
||||
|
||||
// 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");
|
||||
|
||||
|
||||
// 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;
|
||||
}
|
||||
|
||||
@@ -1 +1,22 @@
|
||||
//ignore
|
||||
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();
|
||||
}
|
||||
}
|
||||
@@ -1 +1,2 @@
|
||||
2 error @Log is legal only on types.
|
||||
2 error @Log is legal only on types.
|
||||
2 error The annotation @Slf4j is disallowed for this location
|
||||
Reference in new issue
Block a user