Skip to content

Commit

Permalink
Version 3.3.0-176.0.dev
Browse files Browse the repository at this point in the history
Merge 95686e8 into dev
  • Loading branch information
Dart CI committed Dec 1, 2023
2 parents 876059a + 95686e8 commit 2816724
Show file tree
Hide file tree
Showing 12 changed files with 955 additions and 87 deletions.
360 changes: 354 additions & 6 deletions pkg/analyzer/lib/src/wolf/ir/scope_analyzer.dart

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
// Copyright (c) 2023, 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 'package:_fe_analyzer_shared/src/macros/api.dart';

/*macro*/ class AddClassB implements ClassTypesMacro {
const AddClassB();

@override
buildTypesForClass(clazz, builder) async {
// ignore: deprecated_member_use
final identifier = await builder.resolveIdentifier(
Uri.parse('package:test/a.dart'),
'AddMethodFoo',
);
builder.declareType(
'MyClass',
DeclarationCode.fromParts([
'@',
identifier,
'()\nclass B {}\n',
]),
);
}
}

/*macro*/ class AddMethodBar implements MethodDeclarationsMacro {
const AddMethodBar();

@override
buildDeclarationsForMethod(method, builder) async {
builder.declareInType(
DeclarationCode.fromString(' void bar() {}'),
);
}
}

/*macro*/ class AddMethodFoo implements ClassDeclarationsMacro {
const AddMethodFoo();

@override
buildDeclarationsForClass(clazz, builder) async {
// ignore: deprecated_member_use
final identifier = await builder.resolveIdentifier(
Uri.parse('package:test/a.dart'),
'AddMethodBar',
);
builder.declareInType(
DeclarationCode.fromParts([
' @',
identifier,
'()\n void foo() {}',
]),
);
}
}
64 changes: 5 additions & 59 deletions pkg/analyzer/test/src/summary/macro_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -1530,57 +1530,7 @@ augment class A {

abstract class MacroDeclarationsTest extends MacroElementsBaseTest {
test_addClass_addMethod_addMethod() async {
newFile('$testPackageLibPath/a.dart', r'''
import 'dart:async';
import 'package:_fe_analyzer_shared/src/macros/api.dart';
macro class AddClassB implements ClassTypesMacro {
const AddClassB();
FutureOr<void> buildTypesForClass(clazz, builder) async {
final identifier = await builder.resolveIdentifier(
Uri.parse('package:test/a.dart'),
'AddMethodFoo',
);
builder.declareType(
'MyClass',
DeclarationCode.fromParts([
'@',
identifier,
'()\nclass B {}\n',
]),
);
}
}
macro class AddMethodFoo implements ClassDeclarationsMacro {
const AddMethodFoo();
buildDeclarationsForClass(clazz, builder) async {
final identifier = await builder.resolveIdentifier(
Uri.parse('package:test/a.dart'),
'AddMethodBar',
);
builder.declareInType(
DeclarationCode.fromParts([
' @',
identifier,
'()\n void foo() {}',
]),
);
}
}
macro class AddMethodBar implements MethodDeclarationsMacro {
const AddMethodBar();
buildDeclarationsForMethod(method, builder) async {
builder.declareInType(
DeclarationCode.fromString(' void bar() {}'),
);
}
}
''');
_addSingleMacro('addClass_addMethod_addMethod.dart');

var library = await buildLibrary(r'''
import 'a.dart';
Expand Down Expand Up @@ -5784,13 +5734,12 @@ class MyClass {}
}

const macroCode = r'''
import 'dart:async';
import 'package:_fe_analyzer_shared/src/macros/api.dart';
macro class MyMacro implements ClassTypesMacro {
const MyMacro();
FutureOr<void> buildTypesForClass(clazz, builder) {
buildTypesForClass(clazz, builder) async {
builder.declareType(
'MyClass',
DeclarationCode.fromString('class MyClass {}'),
Expand Down Expand Up @@ -5971,7 +5920,7 @@ import 'a.dart';
macro class MyMacro implements ClassTypesMacro {
const MyMacro();
FutureOr<void> buildTypesForClass(clazz, ClassTypeBuilder builder) async {
buildTypesForClass(clazz, ClassTypeBuilder builder) async {
final identifier = await builder.resolveIdentifier(
Uri.parse('package:test/a.dart'),
'A',
Expand Down Expand Up @@ -6300,13 +6249,12 @@ elementFactory
useEmptyByteStore();

newFile('$testPackageLibPath/a.dart', r'''
import 'dart:async';
import 'package:_fe_analyzer_shared/src/macros/api.dart';
macro class AddClassA implements ClassTypesMacro {
const AddClassA();
FutureOr<void> buildTypesForClass(clazz, builder) async {
buildTypesForClass(clazz, builder) async {
final identifier = await builder.resolveIdentifier(
Uri.parse('package:test/a.dart'),
'AddClassB',
Expand All @@ -6325,7 +6273,7 @@ macro class AddClassA implements ClassTypesMacro {
macro class AddClassB implements ClassTypesMacro {
const AddClassB();
FutureOr<void> buildTypesForClass(clazz, builder) async {
buildTypesForClass(clazz, builder) async {
builder.declareType(
'B',
DeclarationCode.fromString('class B {}\n'),
Expand Down Expand Up @@ -6385,7 +6333,6 @@ files
id: file_0
kind: library_0
libraryImports
library_11 dart:async
library_3 package:macro/api.dart
library_9 dart:core synthetic
cycle_0
Expand Down Expand Up @@ -6458,7 +6405,6 @@ files
id: file_0
kind: library_0
libraryImports
library_11 dart:async
library_3 package:macro/api.dart
library_9 dart:core synthetic
cycle_0
Expand Down
Loading

0 comments on commit 2816724

Please sign in to comment.