blob: d36c2616cc15a8f26ba29db97424f313aa1a6bd2 [file] [log] [blame]
// Copyright (c) 2022, 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.
import 'dart:async';
import 'package:_fe_analyzer_shared/src/macros/api.dart';
import 'api_test_expectations.dart';
macro
class ClassMacro
implements ClassTypesMacro, ClassDeclarationsMacro, ClassDefinitionMacro {
const ClassMacro();
FutureOr<void> buildTypesForClass(ClassDeclaration clazz,
TypeBuilder builder) async {
await checkClassDeclaration(clazz);
}
FutureOr<void> buildDeclarationsForClass(
ClassDeclaration clazz, ClassMemberDeclarationBuilder builder) async {
await checkClassDeclaration(
clazz, typeDeclarationResolver: builder, typeIntrospector: builder);
}
FutureOr<void> buildDefinitionForClass(
ClassDeclaration clazz, ClassDefinitionBuilder builder) async {
await checkClassDeclaration(clazz, typeIntrospector: builder);
await checkIdentifierResolver(builder);
await checkTypeDeclarationResolver(builder,
{clazz.identifier: clazz.identifier.name});
}
}
macro
class FunctionMacro
implements
FunctionTypesMacro,
FunctionDeclarationsMacro,
FunctionDefinitionMacro {
const FunctionMacro();
FutureOr<void> buildTypesForFunction(FunctionDeclaration function,
TypeBuilder builder) async {
checkFunctionDeclaration(function);
await checkIdentifierResolver(builder);
}
FutureOr<void> buildDeclarationsForFunction(FunctionDeclaration function,
DeclarationBuilder builder) async {
checkFunctionDeclaration(function);
await checkIdentifierResolver(builder);
}
FutureOr<void> buildDefinitionForFunction(FunctionDeclaration function,
FunctionDefinitionBuilder builder) async {
checkFunctionDeclaration(function);
await checkIdentifierResolver(builder);
await checkTypeDeclarationResolver(builder, {function.identifier: null});
}
}