Comments (2)
Correction, it seems like using a freestanding declaration method never worked either. I just tested the example from #72307 and that also executes the defer statement immediately (swift-5.9-release). Same as if I change this example to a declaration macro.
@i2h3 if I just add some print statements to your example I get the following:
> swift run
Building for debugging...
[8/8] Linking SignpostClient
Build complete! (1.49s)
Signpost begin: sayHello()
Signpost defer: sayHello()
Hello!
Did you also encounter this behaviour (in your larger application)?
Edit: For completeness, here is the diff:
diff --git a/Sources/SignpostMacros/SignpostMacro.swift b/Sources/SignpostMacros/SignpostMacro.swift
index c5fb8a8..b9a3677 100644
--- a/Sources/SignpostMacros/SignpostMacro.swift
+++ b/Sources/SignpostMacros/SignpostMacro.swift
@@ -10,9 +10,11 @@ public struct SignpostMacro: DeclarationMacro {
stringLiteral: """
let signpostID = signposter.makeSignpostID()
let signpostIntervalState = signposter.beginInterval(#function, id: signpostID)
+ print("Signpost begin: \\(#function)")
defer {
signposter.endInterval(#function, signpostIntervalState)
+ print("Signpost defer: \\(#function)")
}
"""
),
from swift.
According to the description of how macros are expanded, it seems that point (3) is not accurate; the compiler does not replace the macro call with its expanded form, rather it puts the expansion in a sub-tree and replaces the call with that. The diagram above this list also seems to imply the expansion should happen inline, but that doesn't appear to be the behaviour I am observing. Or, am I just doing something wrong? Any advice?
from swift.
Related Issues (20)
- Protocol existentials do not trigger warnings if they will never be executed HOT 1
- Windows version number support for the @available attribute
- Variadic generics cause crash in UsePrespecialized pass HOT 1
- Property definition has inferred type 'some Proto', involving the 'some' return type of another declaration HOT 3
- A typo in a protocol name can crash the compiler under certain conditions
- Conditional compilation results in the code passing the check for missing executable statement
- [Observation] Compiler Crash and Runtime Crash when Observable Object is Generic on Parameter Pack
- DistributedActor as Actor witness already known crash in DistributedCluster library
- 6.0 Toolchain (May 14th) crash when type checking DistributedActorSystem implementation HOT 2
- SILGen assertion failure when compiling unreachable lazy local variable
- indices(of:) is only available in macOS 9999 or newer HOT 1
- Non generic functions accept generic specialization syntax in some cases
- Failed to produce diagnostic for expression in SwiftUI code
- Bug in Embedded/ARC/WebAssembly combination?
- `UnownedTaskExecutor` should be `Hashable` HOT 2
- Expected assignment to opaque type fails
- Compilation error related to `@TaskLocal` on the latest nightly toolchains.
- [Source compatibility suite] Projects failing to build due to compiler crash - compile command failed due to signal 11 (use -v to see invocation)
- Compiler crash when setting strict concurrency complete and default UIView param
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from swift.