File tree Expand file tree Collapse file tree 3 files changed +26
-1
lines changed Expand file tree Collapse file tree 3 files changed +26
-1
lines changed Original file line number Diff line number Diff line change @@ -64,7 +64,18 @@ trait ArgsMacros {
6464}
6565
6666object Util {
67- def isSynthetic (using Quotes )(s : quotes.reflect.Symbol ) = isSyntheticName(getName(s))
67+ def isSynthetic (using Quotes )(s : quotes.reflect.Symbol ) =
68+ isSyntheticAlt(s)
69+
70+ def isSyntheticAlt (using Quotes )(s : quotes.reflect.Symbol ) = {
71+ import quotes .reflect ._
72+ s.flags.is(Flags .Synthetic ) || s.isClassConstructor || s.isLocalDummy || isScala2Macro(s)
73+ }
74+ def isScala2Macro (using Quotes )(s : quotes.reflect.Symbol ) = {
75+ import quotes .reflect ._
76+ (s.flags.is(Flags .Macro ) && s.owner.flags.is(Flags .Scala2x )) ||
77+ (s.flags.is(Flags .Macro ) && ! s.flags.is(Flags .Inline ))
78+ }
6879 def isSyntheticName (name : String ) = {
6980 name == " <init>" || (name.startsWith(" <local " ) && name.endsWith(" >" )) || name == " $anonfun" || name == " macro"
7081 }
Original file line number Diff line number Diff line change 1+ package sourcecode
2+
3+ object SpecialName {
4+
5+ def macroValRun () = {
6+ def keyword (implicit name : sourcecode.Name ): String = name.value
7+
8+ val `macro` = keyword
9+
10+ assert(`macro` == " macro" )
11+ }
12+
13+ }
Original file line number Diff line number Diff line change @@ -18,6 +18,7 @@ object Tests{
1818 EnumFull .run()
1919 NoSynthetic .run()
2020 Synthetic .run()
21+ SpecialName .macroValRun()
2122 ManualImplicit ()
2223 TextTests ()
2324 ArgsTests ()
You can’t perform that action at this time.
0 commit comments