From f8857fdffec01b15a67ca6aad60a1f614fa278e2 Mon Sep 17 00:00:00 2001 From: Reinier Zwitserloot Date: Mon, 25 Mar 2019 20:20:16 +0100 Subject: [performance] improve typeMatches lookup. Especially in light of the built-in copyable annotations lists growing, this should help performance. --- src/core/lombok/javac/handlers/JavacHandlerUtil.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'src/core/lombok/javac') diff --git a/src/core/lombok/javac/handlers/JavacHandlerUtil.java b/src/core/lombok/javac/handlers/JavacHandlerUtil.java index f08098d2..095d1c7a 100644 --- a/src/core/lombok/javac/handlers/JavacHandlerUtil.java +++ b/src/core/lombok/javac/handlers/JavacHandlerUtil.java @@ -298,9 +298,14 @@ public class JavacHandlerUtil { * @param typeNode A type reference to check. */ public static boolean typeMatches(String type, JavacNode node, JCTree typeNode) { - String typeName = typeNode.toString(); - - TypeResolver resolver = new TypeResolver(node.getImportList()); + String typeName = typeNode == null ? null : typeNode.toString(); + if (typeName == null || typeName.length() == 0) return false; + int lastIndexA = typeName.lastIndexOf('.') + 1; + int lastIndexB = type.lastIndexOf('.') + 1; + int len = typeName.length() - lastIndexA; + if (len != type.length() - lastIndexB) return false; + for (int i = 0; i < len; i++) if (typeName.charAt(i + lastIndexA) != type.charAt(i + lastIndexB)) return false; + TypeResolver resolver = node.getImportListAsTypeResolver(); return resolver.typeMatches(node, type, typeName); } -- cgit