summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrançois Garillot <francois@garillot.net>2014-03-11 15:16:56 +0100
committerFrançois Garillot <francois@garillot.net>2014-03-11 16:46:14 +0100
commite09e5a46f16387dbe4866546967c71a8840e26a1 (patch)
treea04bd014c2000e35a83198340cf45b96f7bdf33c
parent7f07d44bcc97ba8435e8c77393554571c9a006ad (diff)
downloadscala-e09e5a46f16387dbe4866546967c71a8840e26a1.tar.gz
scala-e09e5a46f16387dbe4866546967c71a8840e26a1.tar.bz2
scala-e09e5a46f16387dbe4866546967c71a8840e26a1.zip
SI-8392 Guards QuasiquoteClass against non-availability in scala-reflect
This assimilates behavior on Quasiquotes to the one on Reflection : if we don't have the right resource on classpath, we do without rather than throwing. See the bug report for more on rationale (-Xsource flag, early quasiquote loading in Analyzer through FastTrack, etc). Review by @gkossakowski or @xeno-by
-rw-r--r--src/reflect/scala/reflect/internal/Definitions.scala4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/reflect/scala/reflect/internal/Definitions.scala b/src/reflect/scala/reflect/internal/Definitions.scala
index 558e1aa611..fa1694c527 100644
--- a/src/reflect/scala/reflect/internal/Definitions.scala
+++ b/src/reflect/scala/reflect/internal/Definitions.scala
@@ -501,7 +501,9 @@ trait Definitions extends api.StandardDefinitions {
lazy val StringContextClass = requiredClass[scala.StringContext]
- lazy val QuasiquoteClass = if (ApiUniverseClass != NoSymbol) getMember(ApiUniverseClass, tpnme.Quasiquote) else NoSymbol
+ // SI-8392 a reflection universe on classpath may not have
+ // quasiquotes, if e.g. crosstyping with -Xsource on
+ lazy val QuasiquoteClass = if (ApiUniverseClass != NoSymbol) getMemberIfDefined(ApiUniverseClass, tpnme.Quasiquote) else NoSymbol
lazy val QuasiquoteClass_api = if (QuasiquoteClass != NoSymbol) getMember(QuasiquoteClass, tpnme.api) else NoSymbol
lazy val QuasiquoteClass_api_apply = if (QuasiquoteClass_api != NoSymbol) getMember(QuasiquoteClass_api, nme.apply) else NoSymbol
lazy val QuasiquoteClass_api_unapply = if (QuasiquoteClass_api != NoSymbol) getMember(QuasiquoteClass_api, nme.unapply) else NoSymbol