From 37cbe2d3f9cd8737b46b6bfb263277f7b7cd7861 Mon Sep 17 00:00:00 2001 From: Roel Spilker Date: Mon, 18 Jun 2012 23:37:34 +0200 Subject: Fix for issue 376 for Eclipse --- src/core/lombok/eclipse/handlers/EclipseHandlerUtil.java | 12 +++++++++++- src/core/lombok/eclipse/handlers/HandleGetter.java | 3 +++ 2 files changed, 14 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/core/lombok/eclipse/handlers/EclipseHandlerUtil.java b/src/core/lombok/eclipse/handlers/EclipseHandlerUtil.java index 4cf64a14..b0b88656 100644 --- a/src/core/lombok/eclipse/handlers/EclipseHandlerUtil.java +++ b/src/core/lombok/eclipse/handlers/EclipseHandlerUtil.java @@ -774,9 +774,19 @@ public class EclipseHandlerUtil { } } + private static final Map generatedLazyGetters = new WeakHashMap(); + + static void registerCreatedLazyGetter(FieldDeclaration field, char[] methodName, TypeReference returnType) { + generatedLazyGetters.put(field, new GetterMethod(methodName, returnType)); + } + private static GetterMethod findGetter(EclipseNode field) { - TypeReference fieldType = ((FieldDeclaration)field.get()).type; + FieldDeclaration fieldDeclaration = (FieldDeclaration) field.get(); + GetterMethod gm = generatedLazyGetters.get(fieldDeclaration); + if (gm != null) return gm; + TypeReference fieldType = fieldDeclaration.type; boolean isBoolean = nameEquals(fieldType.getTypeName(), "boolean") && fieldType.dimensions() == 0; + EclipseNode typeNode = field.up(); for (String potentialGetterName : toAllGetterNames(field, isBoolean)) { for (EclipseNode potentialGetter : typeNode.down()) { diff --git a/src/core/lombok/eclipse/handlers/HandleGetter.java b/src/core/lombok/eclipse/handlers/HandleGetter.java index d53bf89b..31376749 100644 --- a/src/core/lombok/eclipse/handlers/HandleGetter.java +++ b/src/core/lombok/eclipse/handlers/HandleGetter.java @@ -268,6 +268,9 @@ public class HandleGetter extends EclipseAnnotationHandler { method.bodyStart = method.declarationSourceStart = method.sourceStart = source.sourceStart; method.bodyEnd = method.declarationSourceEnd = method.sourceEnd = source.sourceEnd; method.statements = statements; + + EclipseHandlerUtil.registerCreatedLazyGetter((FieldDeclaration) fieldNode.get(), method.selector, returnType); + return method; } -- cgit