blob: 3e04aae89ed646578a71dd8539917d5b41b5c5f0 [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, classIntrospector: builder);
}
FutureOr<void> buildDefinitionForClass(
ClassDeclaration clazz, ClassDefinitionBuilder builder) async {
await checkClassDeclaration(clazz, classIntrospector: 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});
}
}