diff options
Diffstat (limited to 'java/java-psi-impl/src/com')
-rw-r--r-- | java/java-psi-impl/src/com/intellij/psi/impl/PsiImplUtil.java | 10 | ||||
-rw-r--r-- | java/java-psi-impl/src/com/intellij/psi/impl/compiled/StubBuildingVisitor.java | 33 |
2 files changed, 25 insertions, 18 deletions
diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/PsiImplUtil.java b/java/java-psi-impl/src/com/intellij/psi/impl/PsiImplUtil.java index c1db5cd259a7..9105641fbf40 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/PsiImplUtil.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/PsiImplUtil.java @@ -319,11 +319,11 @@ public class PsiImplUtil { } @Nullable - public static PsiAnnotation findAnnotation(@NotNull PsiAnnotationOwner annotationOwner, @NotNull String qualifiedName) { + public static PsiAnnotation findAnnotation(@Nullable PsiAnnotationOwner annotationOwner, @NotNull String qualifiedName) { + if (annotationOwner == null) return null; + PsiAnnotation[] annotations = annotationOwner.getAnnotations(); - if (annotations.length == 0) { - return null; - } + if (annotations.length == 0) return null; String shortName = StringUtil.getShortName(qualifiedName); for (PsiAnnotation annotation : annotations) { @@ -376,7 +376,7 @@ public class PsiImplUtil { if (!annotationType.isAnnotationType()) return null; PsiModifierList modifierList = annotationType.getModifierList(); if (modifierList == null) return null; - PsiAnnotation target = modifierList.findAnnotation(CommonClassNames.TARGET_ANNOTATION_FQ_NAME); + PsiAnnotation target = modifierList.findAnnotation(CommonClassNames.JAVA_LANG_ANNOTATION_TARGET); if (target == null) return DEFAULT_TARGETS; // if omitted it is applicable to all but Java 8 TYPE_USE/TYPE_PARAMETERS targets PsiAnnotationMemberValue value = target.findAttributeValue(null); diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/compiled/StubBuildingVisitor.java b/java/java-psi-impl/src/com/intellij/psi/impl/compiled/StubBuildingVisitor.java index f8877b9a787b..cfe21ba80764 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/compiled/StubBuildingVisitor.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/compiled/StubBuildingVisitor.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2012 JetBrains s.r.o. + * Copyright 2000-2013 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -304,10 +304,6 @@ public class StubBuildingVisitor<T> extends ClassVisitor { } @Override - public void visitAttribute(final Attribute attr) { - } - - @Override public void visitInnerClass(final String name, final String outerName, final String innerName, final int access) { if ((access & Opcodes.ACC_SYNTHETIC) != 0) return; if (!isCorrectName(innerName)) return; @@ -339,13 +335,15 @@ public class StubBuildingVisitor<T> extends ClassVisitor { @Override @Nullable - public FieldVisitor visitField(final int access, final String name, final String desc, final String signature, final Object value) { + public FieldVisitor visitField(int access, String name, String desc, String signature, Object value) { if ((access & Opcodes.ACC_SYNTHETIC) != 0) return null; if (!isCorrectName(name)) return null; - final byte flags = PsiFieldStubImpl.packFlags((access & Opcodes.ACC_ENUM) != 0, (access & Opcodes.ACC_DEPRECATED) != 0, false); - final PsiFieldStub stub = new PsiFieldStubImpl(myResult, name, fieldType(desc, signature), constToString(value), flags); - final PsiModifierListStub modList = new PsiModifierListStubImpl(stub, packFieldFlags(access)); + byte flags = PsiFieldStubImpl.packFlags((access & Opcodes.ACC_ENUM) != 0, (access & Opcodes.ACC_DEPRECATED) != 0, false); + TypeInfo type = fieldType(desc, signature); + String initializer = constToString(value, "boolean".equals(type.text.getString())); + PsiFieldStub stub = new PsiFieldStubImpl(myResult, name, type, initializer, flags); + PsiModifierListStub modList = new PsiModifierListStubImpl(stub, packFieldFlags(access)); return new AnnotationCollectingVisitor(modList); } @@ -358,7 +356,8 @@ public class StubBuildingVisitor<T> extends ClassVisitor { catch (ClsFormatException e) { return fieldTypeViaDescription(desc); } - } else { + } + else { return fieldTypeViaDescription(desc); } } @@ -536,7 +535,7 @@ public class StubBuildingVisitor<T> extends ClassVisitor { @Override public void visit(final String name, final Object value) { valuePairPrefix(name); - myBuilder.append(constToString(value)); + myBuilder.append(constToString(value, false)); } @Override @@ -696,13 +695,21 @@ public class StubBuildingVisitor<T> extends ClassVisitor { } @Nullable - private static String constToString(@Nullable Object value) { + private static String constToString(@Nullable Object value, boolean isBoolean) { if (value == null) return null; if (value instanceof String) return "\"" + StringUtil.escapeStringCharacters((String)value) + "\""; - if (value instanceof Integer || value instanceof Boolean) return value.toString(); + if (value instanceof Boolean) return value.toString(); if (value instanceof Long) return value.toString() + "L"; + if (value instanceof Integer) { + if (isBoolean) { + if (value.equals(0)) return "false"; + if (value.equals(1)) return "true"; + } + return value.toString(); + } + if (value instanceof Double) { final double d = ((Double)value).doubleValue(); if (Double.isInfinite(d)) { |