2016-04-13 7 views
2

私はを持っていて、マクロ展開時に表示されているかどうかを確認したい(例えばローカル変数で)準クォートでは他のものを参照していません。マクロ展開時にシンボルが表示されているかシャドーされているかを調べる

http://docs.scala-lang.org/overviews/reflection/annotations-names-scopes.htmlを見ると、1つのアイデアは、囲むレキシカルスコープを見て、同じ名前のシンボルが含まれているかどうかを確認することです。問題は、マクロの直接囲みスコープを取得する方法が見つからないことです。 ScalaのユーザにSOM-snyttの回答に基づいて

答えて

0

ソリューション:

symbol.pos == c.typecheck(q"${symbol.name.toTermName}").symbol.pos 

私のテストのいずれかにシンボルが同じ名前を持つにもかかわらず、等しくなかったので、(私は、ポジションを比較しなければならなかった、所有者とポジション)

関連する問題