Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[macros] Further improve specializing generics in macros #2476

Open
ktoso opened this issue Feb 6, 2024 · 1 comment
Open

[macros] Further improve specializing generics in macros #2476

ktoso opened this issue Feb 6, 2024 · 1 comment
Labels
bug Something isn't working

Comments

@ktoso
Copy link
Contributor

ktoso commented Feb 6, 2024

Description

In #2450 we introduced

@freestanding(expression)
public macro checkGeneric_root<DAS>() = #externalMacro(module: "MacroDefinition", type: "GenericToVoidMacro")

@freestanding(expression)
public macro checkGeneric<DAS>() = #checkGeneric_root<DAS>()

such that the DAS gets replaced in every expansion:

checkGeneric<String> -> checkGeneric_root<String>

but the following cases are not replaced yet:

Would it make sense to specialize macros with types that aren’t part of the second-level macro? Ie. would the following make sense?

macro gen<T>(a: T) = #externalMacro …
macro genString(a: String) = #gen<String>(a: a)

And then #genString(a: "x") would have the intermediate expansion step #gen(a: "x")


Similarly, would it make sense to allow generic nesting in a second-level macro definition? Ie. would something like the following make sense?

macro gen<T>(a: T) = #externalMacro …
macro genArray<T>(a: [T]) = #gen<Array<T>>(a: a)

And then #genArray(a: [1]) would have the intermediate expansion step #gen<Array>(a: [1])


#2450 (comment)

Steps to Reproduce

No response

Radar

rdar://122364628

@AppAppWorks
Copy link
Contributor

I wanted to work on this issue but I had difficulties understanding what exactly the issue is. May anyone familiar with the issue give a brief explanation for me?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants