22// RUN: %empty-directory(%t-scratch)
33// RUN: %target-build-swift -I %swift-host-lib-dir -L %swift-host-lib-dir -emit-library -o %t/%target-library-name(MacroDefinition) -module-name=MacroDefinition %S/Inputs/syntax_macro_definitions.swift -g -no-toolchain-stdlib-rpath
44// RUN: %target-swift-frontend -emit-module -o %t/macro_library.swiftmodule %S/Inputs/macro_library.swift -module-name macro_library -enable-experimental-feature Macros -load-plugin-library %t/%target-library-name(MacroDefinition) -I %swift-host-lib-dir
5- // RUN: %target-swift-frontend -typecheck -I%t -verify -primary-file %s %S/Inputs/macro_expand_other.swift -verify-ignore-unknown -enable-experimental-feature Macros -load-plugin-library %t/%target-library-name(MacroDefinition) -I %swift-host-lib-dir
5+ // RUN: %target-swift-frontend -typecheck -I%t -verify -primary-file %s %S/Inputs/macro_expand_other.swift -verify-ignore-unknown -enable-experimental-feature Macros -load-plugin-library %t/%target-library-name(MacroDefinition) -I %swift-host-lib-dir -dump-macro-expansions > %t/expansions-dump.txt 2>&1
6+ // RUN: %FileCheck -check-prefix=CHECK-DUMP %s < %t/expansions-dump.txt
67
78// REQUIRES: asserts
89// REQUIRES: OS=macosx
@@ -13,10 +14,65 @@ struct Treat {}
1314
1415@Observable
1516final class Dog : Observable {
17+ // CHECK-DUMP: public nonisolated func addObserver
18+ // CHECK-DUMP: public nonisolated func removeObserver
19+
20+ // CHECK-DUMP: private struct Storage {
21+ // CHECK-DUMP: var name: String?
22+ // CHECK-DUMP: var treat: Treat?
23+ // CHECK-DUMP: var isHappy: Bool = true
24+ // CHECK-DUMP: }
25+
1626 var name : String ?
27+ // CHECK-DUMP: get {
28+ // CHECK-DUMP: _registrar.beginAccess(\.name)
29+ // CHECK-DUMP: defer { _registrar.endAccess() }
30+ // CHECK-DUMP: return _storage.name
31+ // CHECK-DUMP: }
32+ // CHECK-DUMP: set {
33+ // CHECK-DUMP: _registrar.beginAccess(\.name)
34+ // CHECK-DUMP: _registrar.register(observable: self, willSet: \.name, to: newValue)
35+ // CHECK-DUMP: defer {
36+ // CHECK-DUMP: _registrar.register(observable: self, didSet: \.name)
37+ // CHECK-DUMP: _registrar.endAccess()
38+ // CHECK-DUMP: }
39+ // CHECK-DUMP: _storage.name = newValue
40+ // CHECK-DUMP: }
41+
42+
1743 var treat : Treat ?
44+ // CHECK-DUMP: get {
45+ // CHECK-DUMP: _registrar.beginAccess(\.treat)
46+ // CHECK-DUMP: defer { _registrar.endAccess() }
47+ // CHECK-DUMP: return _storage.treat
48+ // CHECK-DUMP: }
49+ // CHECK-DUMP: set {
50+ // CHECK-DUMP: _registrar.beginAccess(\.treat)
51+ // CHECK-DUMP: _registrar.register(observable: self, willSet: \.treat, to: newValue)
52+ // CHECK-DUMP: defer {
53+ // CHECK-DUMP: _registrar.register(observable: self, didSet: \.treat)
54+ // CHECK-DUMP: _registrar.endAccess()
55+ // CHECK-DUMP: }
56+ // CHECK-DUMP: _storage.treat = newValue
57+ // CHECK-DUMP: }
58+
1859
1960 var isHappy : Bool = true
61+ // CHECK-DUMP: get {
62+ // CHECK-DUMP: _registrar.beginAccess(\.isHappy)
63+ // CHECK-DUMP: defer { _registrar.endAccess() }
64+ // CHECK-DUMP: return _storage.isHappy
65+ // CHECK-DUMP: }
66+ // CHECK-DUMP: set {
67+ // CHECK-DUMP: _registrar.beginAccess(\.isHappy)
68+ // CHECK-DUMP: _registrar.register(observable: self, willSet: \.isHappy, to: newValue)
69+ // CHECK-DUMP: defer {
70+ // CHECK-DUMP: _registrar.register(observable: self, didSet: \.isHappy)
71+ // CHECK-DUMP: _registrar.endAccess()
72+ // CHECK-DUMP: }
73+ // CHECK-DUMP: _storage.isHappy = newValue
74+ // CHECK-DUMP: }
75+
2076
2177 init ( ) { }
2278
0 commit comments