From e09e5a46f16387dbe4866546967c71a8840e26a1 Mon Sep 17 00:00:00 2001 From: François Garillot Date: Tue, 11 Mar 2014 15:16:56 +0100 Subject: 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 --- src/reflect/scala/reflect/internal/Definitions.scala | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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 -- cgit v1.2.3