| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2013, the Dart project authors. | 2 * Copyright (c) 2013, the Dart project authors. |
| 3 * | 3 * |
| 4 * Licensed under the Eclipse Public License v1.0 (the "License"); you may not u
se this file except | 4 * Licensed under the Eclipse Public License v1.0 (the "License"); you may not u
se this file except |
| 5 * in compliance with the License. You may obtain a copy of the License at | 5 * in compliance with the License. You may obtain a copy of the License at |
| 6 * | 6 * |
| 7 * http://www.eclipse.org/legal/epl-v10.html | 7 * http://www.eclipse.org/legal/epl-v10.html |
| 8 * | 8 * |
| 9 * Unless required by applicable law or agreed to in writing, software distribut
ed under the License | 9 * Unless required by applicable law or agreed to in writing, software distribut
ed under the License |
| 10 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY K
IND, either express | 10 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY K
IND, either express |
| (...skipping 13 matching lines...) Expand all Loading... |
| 24 * to find out if the error should actually be reported. In this case, these err
ors are conditional | 24 * to find out if the error should actually be reported. In this case, these err
ors are conditional |
| 25 * on the non-existence of an {@code @proxy} annotation. | 25 * on the non-existence of an {@code @proxy} annotation. |
| 26 * <p> | 26 * <p> |
| 27 * If we have other conditional error codes in the future, we should have this c
lass implement some | 27 * If we have other conditional error codes in the future, we should have this c
lass implement some |
| 28 * ConditionalErrorCode so that after resolution, a list of ConditionalErrorCode
can be visited | 28 * ConditionalErrorCode so that after resolution, a list of ConditionalErrorCode
can be visited |
| 29 * instead of multiple lists of *ConditionalErrorCodes. | 29 * instead of multiple lists of *ConditionalErrorCodes. |
| 30 */ | 30 */ |
| 31 public class ProxyConditionalAnalysisError { | 31 public class ProxyConditionalAnalysisError { |
| 32 | 32 |
| 33 /** | 33 /** |
| 34 * The name of the proxy annotation, from the meta pub package. | 34 * The name of the proxy annotation, from dart:core. |
| 35 */ | 35 */ |
| 36 private static final String PROXY_ANNOTATION_NAME = "proxy"; | 36 private static final String PROXY_ANNOTATION_NAME = "proxy"; |
| 37 | 37 |
| 38 /** | 38 /** |
| 39 * The name of the meta library name, from the meta pub package. | |
| 40 */ | |
| 41 private static final String META_LIBRARY_NAME = "meta"; | |
| 42 | |
| 43 /** | |
| 44 * Return {@code true} if the given element represents a class that has the pr
oxy annotation. | 39 * Return {@code true} if the given element represents a class that has the pr
oxy annotation. |
| 45 * | 40 * |
| 46 * @param element the class being tested | 41 * @param element the class being tested |
| 47 * @return {@code true} if the given element represents a class that has the p
roxy annotation | 42 * @return {@code true} if the given element represents a class that has the p
roxy annotation |
| 48 */ | 43 */ |
| 49 private static boolean classHasProxyAnnotation(Element element) { | 44 private static boolean classHasProxyAnnotation(Element element) { |
| 50 if (element instanceof ClassElement) { | 45 if (element instanceof ClassElement) { |
| 51 ClassElement classElement = (ClassElement) element; | 46 ClassElement classElement = (ClassElement) element; |
| 52 ElementAnnotation[] annotations = classElement.getMetadata(); | 47 ElementAnnotation[] annotations = classElement.getMetadata(); |
| 53 for (ElementAnnotation annotation : annotations) { | 48 for (ElementAnnotation annotation : annotations) { |
| 54 Element elementAnnotation = annotation.getElement(); | 49 Element elementAnnotation = annotation.getElement(); |
| 55 if (elementAnnotation != null) { | 50 if (elementAnnotation != null) { |
| 56 LibraryElement lib = elementAnnotation.getLibrary(); | 51 LibraryElement lib = elementAnnotation.getLibrary(); |
| 57 if (elementAnnotation.getName().equals(PROXY_ANNOTATION_NAME) && lib !
= null | 52 if (lib != null && lib.isDartCore() |
| 58 && lib.getName().equals(META_LIBRARY_NAME)) { | 53 && elementAnnotation.getName().equals(PROXY_ANNOTATION_NAME)) { |
| 59 return true; | 54 return true; |
| 60 } | 55 } |
| 61 } | 56 } |
| 62 } | 57 } |
| 63 } | 58 } |
| 64 return false; | 59 return false; |
| 65 } | 60 } |
| 66 | 61 |
| 67 /** | 62 /** |
| 68 * The enclosing {@link ClassElement}, this is what will determine if the erro
r code should, or | 63 * The enclosing {@link ClassElement}, this is what will determine if the erro
r code should, or |
| (...skipping 30 matching lines...) Expand all Loading... |
| 99 /** | 94 /** |
| 100 * Return {@code true} iff the enclosing class has the proxy annotation. | 95 * Return {@code true} iff the enclosing class has the proxy annotation. |
| 101 * | 96 * |
| 102 * @return {@code true} iff the enclosing class has the proxy annotation | 97 * @return {@code true} iff the enclosing class has the proxy annotation |
| 103 */ | 98 */ |
| 104 public boolean shouldIncludeErrorCode() { | 99 public boolean shouldIncludeErrorCode() { |
| 105 return !classHasProxyAnnotation(enclosingElement); | 100 return !classHasProxyAnnotation(enclosingElement); |
| 106 } | 101 } |
| 107 | 102 |
| 108 } | 103 } |
| OLD | NEW |