Files
sdk/pkg/kernel/lib/transformations/reify/asts.dart
T
Karl Klose ed390e7bad Change imports in reify transformation to not use 'package:'
R=dmitryas@google.com

Change-Id: If2e1f735de9f3879fcf321af5d5fa00e291e28a8
Reviewed-on: https://dart-review.googlesource.com/16460
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Commit-Queue: Karl Klose <karlklose@google.com>
2017-10-25 11:25:00 +00:00

55 lines
1.4 KiB
Dart

// Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
library kernel.transformations.reify.ast_helpers;
import '../../ast.dart';
Class getEnclosingClass(TreeNode node) {
TreeNode original = node;
while (node != null && node is! Class) {
node = node.parent;
}
if (node == null) {
throw 'internal error: enclosing class not found for $original';
}
return node;
}
Library getEnclosingLibrary(TreeNode node) {
TreeNode original = node;
while (node != null && node is! Library) {
node = node.parent;
}
if (node == null) {
throw 'internal error: enclosing library not found for $original';
}
return node;
}
Member getEnclosingMember(TreeNode node) {
TreeNode original = node;
while (node != null && node is! Member) {
node = node.parent;
}
if (node == null) {
throw 'internal error: enclosing member not found for $original';
}
return node;
}
List<TypeParameter> typeVariables(DartType type) {
List<TypeParameter> parameters = <TypeParameter>[];
collect(DartType type) {
if (type is InterfaceType) {
type.typeArguments.map(collect);
} else if (type is TypeParameterType) {
parameters.add(type.parameter);
}
}
collect(type);
return parameters;
}