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

Unified Diff: pkg/compiler/lib/src/kernel/element_map_mixins.dart

Issue 2996723002: Support typedef type literals (Closed)
Patch Set: Cleanup Created 3 years, 4 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
Index: pkg/compiler/lib/src/kernel/element_map_mixins.dart
diff --git a/pkg/compiler/lib/src/kernel/element_map_mixins.dart b/pkg/compiler/lib/src/kernel/element_map_mixins.dart
index 78a1a9a79e05d2ef9645f5d36e2361d5555e25b7..6f39411ee043e98b8c1d5403450c905377bd3005 100644
--- a/pkg/compiler/lib/src/kernel/element_map_mixins.dart
+++ b/pkg/compiler/lib/src/kernel/element_map_mixins.dart
@@ -624,16 +624,26 @@ class Constantifier extends ir.ExpressionVisitor<ConstantExpression> {
@override
ConstantExpression visitTypeLiteral(ir.TypeLiteral node) {
- DartType type = elementMap.getDartType(node.type);
String name;
+ DartType type = elementMap.getDartType(node.type);
if (type.isDynamic) {
name = 'dynamic';
} else if (type is InterfaceType) {
name = type.element.name;
- } else if (type.isFunctionType || type.isTypedef) {
+ } else if (type.isTypedef) {
// TODO(johnniwinther): Compute a name for the type literal? It is only
// used in error messages in the old SSA builder.
name = '?';
+ } else if (node.type is ir.FunctionType) {
+ ir.FunctionType functionType = node.type;
+ if (functionType.typedef != null) {
+ type = elementMap.getTypedefType(functionType.typedef);
+ name = functionType.typedef.name;
+ } else {
+ // TODO(johnniwinther): Remove branch when [KernelAstAdapter] is
+ // removed.
+ name = '?';
+ }
} else {
return defaultExpression(node);
}

Powered by Google App Engine
This is Rietveld 408576698