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

Unified Diff: pkg/analyzer/lib/src/kernel/resynthesize.dart

Issue 2991723002: Resynthesize FunctionType(s) from Kernel. (Closed)
Patch Set: Created 3 years, 5 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/analyzer/lib/src/kernel/resynthesize.dart
diff --git a/pkg/analyzer/lib/src/kernel/resynthesize.dart b/pkg/analyzer/lib/src/kernel/resynthesize.dart
index fe5ff65d0f35ef0817f555c7061d49b0e0e1aa40..cd0900ff2408307ca17057854b7e996964923d91 100644
--- a/pkg/analyzer/lib/src/kernel/resynthesize.dart
+++ b/pkg/analyzer/lib/src/kernel/resynthesize.dart
@@ -418,14 +418,40 @@ class _KernelLibraryResynthesizerContextImpl
DartType getType(ElementImpl context, kernel.DartType kernelType) {
if (kernelType is kernel.DynamicType) return DynamicTypeImpl.instance;
if (kernelType is kernel.VoidType) return VoidTypeImpl.instance;
+
if (kernelType is kernel.InterfaceType) {
return _getInterfaceType(context, kernelType.className.canonicalName,
kernelType.typeArguments);
}
+
if (kernelType is kernel.TypeParameterType) {
kernel.TypeParameter kTypeParameter = kernelType.parameter;
return _getTypeParameter(context, kTypeParameter).type;
}
+
+ if (kernelType is kernel.FunctionType) {
+ var functionElement = new FunctionElementImpl.synthetic([], null);
+ functionElement.enclosingElement = context;
+
+ functionElement.typeParameters = kernelType.typeParameters.map((k) {
+ return new TypeParameterElementImpl.forKernel(functionElement, k);
+ }).toList(growable: false);
+
+ functionElement.parameters = ParameterElementImpl.forKernelParameters(
+ functionElement,
+ kernelType.requiredParameterCount,
+ kernelType.positionalParameters
+ .map((t) => new kernel.VariableDeclaration(null, type: t))
+ .toList(),
+ kernelType.namedParameters
+ .map((t) => new kernel.VariableDeclaration(t.name, type: t.type))
+ .toList());
+
+ functionElement.returnType =
+ getType(functionElement, kernelType.returnType);
+ return functionElement.type;
+ }
+
// TODO(scheglov) Support other kernel types.
throw new UnimplementedError('For ${kernelType.runtimeType}');
}
« no previous file with comments | « pkg/analyzer/lib/src/dart/element/element.dart ('k') | pkg/analyzer/test/src/summary/resynthesize_common.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698