equal
deleted
inserted
replaced
42 |
42 |
43 import javax.lang.model.element.Element; |
43 import javax.lang.model.element.Element; |
44 import javax.lang.model.element.ElementKind; |
44 import javax.lang.model.element.ElementKind; |
45 import javax.lang.model.element.ExecutableElement; |
45 import javax.lang.model.element.ExecutableElement; |
46 import javax.lang.model.element.Name; |
46 import javax.lang.model.element.Name; |
|
47 import javax.lang.model.element.VariableElement; |
47 import javax.lang.model.type.TypeKind; |
48 import javax.lang.model.type.TypeKind; |
48 import javax.lang.model.type.TypeMirror; |
49 import javax.lang.model.type.TypeMirror; |
49 import javax.tools.Diagnostic.Kind; |
50 import javax.tools.Diagnostic.Kind; |
50 import javax.tools.JavaFileObject; |
51 import javax.tools.JavaFileObject; |
51 |
52 |
820 } |
821 } |
821 } |
822 } |
822 |
823 |
823 @Override |
824 @Override |
824 public Void visitValue(ValueTree tree, Void ignore) { |
825 public Void visitValue(ValueTree tree, Void ignore) { |
|
826 ReferenceTree ref = tree.getReference(); |
|
827 if (ref == null || ref.getSignature().isEmpty()) { |
|
828 if (!isConstant(env.currElement)) |
|
829 env.messages.error(REFERENCE, tree, "dc.value.not.allowed.here"); |
|
830 } else { |
|
831 Element e = env.trees.getElement(new DocTreePath(getCurrentPath(), ref)); |
|
832 if (!isConstant(e)) |
|
833 env.messages.error(REFERENCE, tree, "dc.value.not.a.constant"); |
|
834 } |
|
835 |
825 markEnclosingTag(Flag.HAS_INLINE_TAG); |
836 markEnclosingTag(Flag.HAS_INLINE_TAG); |
826 return super.visitValue(tree, ignore); |
837 return super.visitValue(tree, ignore); |
|
838 } |
|
839 |
|
840 private boolean isConstant(Element e) { |
|
841 if (e == null) |
|
842 return false; |
|
843 |
|
844 switch (e.getKind()) { |
|
845 case FIELD: |
|
846 Object value = ((VariableElement) e).getConstantValue(); |
|
847 return (value != null); // can't distinguish "not a constant" from "constant is null" |
|
848 default: |
|
849 return false; |
|
850 } |
827 } |
851 } |
828 |
852 |
829 @Override |
853 @Override |
830 public Void visitVersion(VersionTree tree, Void ignore) { |
854 public Void visitVersion(VersionTree tree, Void ignore) { |
831 warnIfEmpty(tree, tree.getBody()); |
855 warnIfEmpty(tree, tree.getBody()); |