Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(692)

Unified Diff: pkg/analyzer/test/src/summary/resynthesize_test.dart

Issue 1979343002: Test resynthesized modifiers using accessors. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/analyzer/test/src/summary/resynthesize_test.dart
diff --git a/pkg/analyzer/test/src/summary/resynthesize_test.dart b/pkg/analyzer/test/src/summary/resynthesize_test.dart
index 45b0aa75e73d8abb2aab249685f7ee63c49acd32..e4f296e1d7d882c1cfe7ea0d397abe06c4c66cc4 100644
--- a/pkg/analyzer/test/src/summary/resynthesize_test.dart
+++ b/pkg/analyzer/test/src/summary/resynthesize_test.dart
@@ -675,11 +675,11 @@ abstract class AbstractResynthesizeTest extends AbstractSingleUnitTest {
reason: desc);
expect(resynthesized.docRange, original.docRange, reason: desc);
compareMetadata(resynthesized.metadata, original.metadata, desc);
- // Modifiers are a pain to test via handles. So just test them via the
- // actual element.
+
+ // Validate modifiers.
for (Modifier modifier in Modifier.persistedValues) {
- bool got = rImpl.hasModifier(modifier);
- bool want = oImpl.hasModifier(modifier);
+ bool got = _hasModifier(resynthesized, modifier);
+ bool want = _hasModifier(original, modifier);
expect(got, want,
reason: 'Mismatch in $desc.$modifier: got $got, want $want');
}
@@ -1221,6 +1221,97 @@ abstract class AbstractResynthesizeTest extends AbstractSingleUnitTest {
SimpleIdentifier identifier = initializer;
expect(identifier.staticElement, isNull, reason: desc);
}
+
+ bool _hasModifier(Element element, Modifier modifier) {
+ if (modifier == Modifier.ABSTRACT) {
+ if (element is ClassElement) {
+ return element.isAbstract;
+ }
+ if (element is ExecutableElement) {
+ return element.isAbstract;
+ }
+ return false;
+ } else if (modifier == Modifier.ASYNCHRONOUS) {
+ if (element is ExecutableElement) {
+ return element.isAsynchronous;
+ }
+ return false;
+ } else if (modifier == Modifier.CONST) {
+ if (element is VariableElement) {
+ return element.isConst;
+ }
+ return false;
+ } else if (modifier == Modifier.DEFERRED) {
+ if (element is ImportElement) {
+ return element.isDeferred;
+ }
+ return false;
+ } else if (modifier == Modifier.ENUM) {
+ if (element is ClassElement) {
+ return element.isEnum;
+ }
+ return false;
+ } else if (modifier == Modifier.EXTERNAL) {
+ if (element is ExecutableElement) {
+ return element.isExternal;
+ }
+ return false;
+ } else if (modifier == Modifier.FACTORY) {
+ if (element is ConstructorElement) {
+ return element.isFactory;
+ }
+ return false;
+ } else if (modifier == Modifier.FINAL) {
+ if (element is VariableElement) {
+ return element.isFinal;
+ }
+ return false;
+ } else if (modifier == Modifier.GENERATOR) {
+ if (element is ExecutableElement) {
+ return element.isGenerator;
+ }
+ return false;
+ } else if (modifier == Modifier.GETTER) {
+ if (element is PropertyAccessorElement) {
+ return element.isGetter;
+ }
+ return false;
+ } else if (modifier == Modifier.HAS_EXT_URI) {
+ if (element is LibraryElement) {
+ return element.hasExtUri;
+ }
+ return false;
+ } else if (modifier == Modifier.IMPLICIT_TYPE) {
+ if (element is ExecutableElement) {
+ return element.hasImplicitReturnType;
+ }
+ return false;
+ } else if (modifier == Modifier.MIXIN_APPLICATION) {
+ if (element is ClassElement) {
+ return element.isMixinApplication;
+ }
+ return false;
+ } else if (modifier == Modifier.REFERENCES_SUPER) {
+ if (element is ClassElement) {
+ return element.hasReferenceToSuper;
+ }
+ return false;
+ } else if (modifier == Modifier.SETTER) {
+ if (element is PropertyAccessorElement) {
+ return element.isSetter;
+ }
+ return false;
+ } else if (modifier == Modifier.STATIC) {
+ if (element is ExecutableElement) {
+ return element.isStatic;
+ }
+ return false;
+ } else if (modifier == Modifier.SYNTHETIC) {
+ return element.isSynthetic;
+ }
+ throw new UnimplementedError(
+ 'Modifier $modifier for ${element?.runtimeType}');
+ }
}
@reflectiveTest
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698