Comments (4)
Synced to Apple’s issue tracker as rdar://131441049
from swift-syntax.
Hey there!
Thanks for bringing this up.
There's a bit of a mismatch between what your test is doing and how the macro actually behaves in real code–since the unit tests expansion is based on a totally different expansion system than source code (compiler) expansion.
If you want to cover conformances
in your unit tests, you have to provide a list of conformances to the assertMacroExpansion
function. The function has an argument called macroSpecs
that you need to fill up if you want to receive conformances in your macro implementation from unit tests.
Here's the documentation for this argument:
swift-syntax/Sources/SwiftSyntaxMacrosTestSupport/Assertions.swift
Lines 88 to 91 in 70e3741
Basically, there's this MacroSpec
struct with a conformances
property that you need to fill in for your tests. It's a new thing that came with swift-syntax version 6.0, which is part of the upcoming Swift 6.0 release. If you're really keen, you can check it out on the main
branch right now.
from swift-syntax.
Thanks @Matejkob However I'm on a client's project where we have to support iOS16 and Swift 5. Is there any way to address this without Swift 6?
from swift-syntax.
Ok, I updated to use the main branch and now I can interrogate the protocols.
from swift-syntax.
Related Issues (20)
- Improperly escaped backslash in fix-it message HOT 1
- New 600.0.0 prerelease HOT 4
- FixItApplier crash when generating diagnostics for whole tree but applying them to a subtree HOT 11
- Further generalize parse diagnostics functions HOT 1
- Body Macro formatted despite formatMode disabled HOT 2
- Improve diagnostics for C-style parameter declaration with structural type HOT 1
- [Parser] Misparsed function parameter with keyword argument '_const' HOT 1
- `600.0.0-prerelease-2024-07-24` fails to build on macOS 12 with Swift 5.10 HOT 12
- swift-syntax doesn't give negative integer literals special treatment while the Swift compiler does. HOT 2
- Source location retrieving doesn't work in body macro expansion assertion HOT 1
- KeyPath `.self` cannot be resolved in earlier Swift versions HOT 1
- Detect recursive attached macro expansion HOT 1
- Macro protocols lack `async` from `expansion` function requirements despite proposals stating they should have it HOT 17
- DeclModifierListSyntax adds redundant space after private modifier HOT 2
- Multiple SPM frameworks with macros fail Xcode app project build HOT 2
- swift format fails when using new `sending` keyword HOT 4
- [Swift 6.0] Xcode Beta 16 build failure HOT 10
- Invalid semantic versioning? HOT 2
- Compiler crash while emitting witness table for protocol conformance
- [Diagnostics] Intra-group trivia not preserved when moving a node group HOT 1
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-syntax.