aboutsummaryrefslogtreecommitdiff
path: root/src/core/lombok/javac
diff options
context:
space:
mode:
authorBulgakov Alexander <buls@yandex.ru>2019-04-24 14:06:15 +0300
committerBulgakov Alexander <buls@yandex.ru>2019-04-24 14:06:15 +0300
commitf0343886a331f3cb2175545a062f3736610f9179 (patch)
treec4699c4be71abc13d6185ffe21f363f18dff6267 /src/core/lombok/javac
parent69e6932b81f9e6e17da3097ac6e576a261d3e4c1 (diff)
downloadlombok-f0343886a331f3cb2175545a062f3736610f9179.tar.gz
lombok-f0343886a331f3cb2175545a062f3736610f9179.tar.bz2
lombok-f0343886a331f3cb2175545a062f3736610f9179.zip
improvements type inference of type intersections (affects ValLambda.java, ValWeirdTypes.java tests)
Diffstat (limited to 'src/core/lombok/javac')
-rw-r--r--src/core/lombok/javac/JavacResolution.java6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/core/lombok/javac/JavacResolution.java b/src/core/lombok/javac/JavacResolution.java
index abbf6726..7f940d2a 100644
--- a/src/core/lombok/javac/JavacResolution.java
+++ b/src/core/lombok/javac/JavacResolution.java
@@ -336,7 +336,7 @@ public class JavacResolution {
if (type instanceof ClassType) {
List<Type> ifaces = ((ClassType) type).interfaces_field;
Type supertype = ((ClassType) type).supertype_field;
- if (ifaces != null && ifaces.length() == 1) {
+ if (isObject(supertype) && ifaces != null && ifaces.length() > 0) {
return typeToJCTree(ifaces.get(0), ast, allowCompound, allowVoid);
}
if (supertype != null) return typeToJCTree(supertype, ast, allowCompound, allowVoid);
@@ -402,6 +402,10 @@ public class JavacResolution {
return genericsToJCTreeNodes(generics, ast, replacement);
}
+ private static boolean isObject(Type supertype) {
+ return supertype.tsym.toString().equals("java.lang.Object");
+ }
+
private static JCExpression genericsToJCTreeNodes(List<Type> generics, JavacAST ast, JCExpression rawTypeNode) throws TypeNotConvertibleException {
if (generics != null && !generics.isEmpty()) {
ListBuffer<JCExpression> args = new ListBuffer<JCExpression>();