summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/typechecker/Macros.scala
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2013-05-11 13:02:54 -0700
committerPaul Phillips <paulp@improving.org>2013-05-11 13:02:54 -0700
commit433880e91cba9e1e926e9fcbf04ecd4aeb1d73eb (patch)
treecc12050e025e2fe0b38fa1cea9e9d64d784f5131 /src/compiler/scala/tools/nsc/typechecker/Macros.scala
parent24cad039b309cf3ccd79aca8f3bae398a42ab66b (diff)
downloadscala-433880e91cba9e1e926e9fcbf04ecd4aeb1d73eb.tar.gz
scala-433880e91cba9e1e926e9fcbf04ecd4aeb1d73eb.tar.bz2
scala-433880e91cba9e1e926e9fcbf04ecd4aeb1d73eb.zip
Refactored stabilize.
Mode elimination ramps up in difficulty now, so I pursued other forms of code hygiene.
Diffstat (limited to 'src/compiler/scala/tools/nsc/typechecker/Macros.scala')
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/Macros.scala8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/Macros.scala b/src/compiler/scala/tools/nsc/typechecker/Macros.scala
index d07297bb35..31cc8bd93c 100644
--- a/src/compiler/scala/tools/nsc/typechecker/Macros.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/Macros.scala
@@ -362,6 +362,8 @@ trait Macros extends scala.tools.reflect.FastTrack with Traces {
catch { case MacroBodyTypecheckException => EmptyTree }
class MacroTyper(val typer: Typer, val macroDdef: DefDef) extends MacroErrors {
+ private def typed1Expr(tree: Tree) = typer.typed1(tree, EXPRmode, WildcardType)
+
// Phase I: sanity checks
val macroDef = macroDdef.symbol
macroLogVerbose("typechecking macro def %s at %s".format(macroDef, macroDdef.pos))
@@ -379,20 +381,20 @@ trait Macros extends scala.tools.reflect.FastTrack with Traces {
// e.g. a "type arguments [U] do not conform to method foo's type parameter bounds" error
// doesn't manifest itself as an error in the resulting tree
val prevNumErrors = reporter.ERROR.count
- var rhs1 = typer.typed1(rhs, EXPRmode, WildcardType)
+ var rhs1 = typed1Expr(rhs)
def rhsNeedsMacroExpansion = rhs1.symbol != null && rhs1.symbol.isMacro && !rhs1.symbol.isErroneous
while (rhsNeedsMacroExpansion) {
rhs1 = macroExpand1(typer, rhs1) match {
case Success(expanded) =>
try {
- val typechecked = typer.typed1(expanded, EXPRmode, WildcardType)
+ val typechecked = typed1Expr(expanded)
macroLogVerbose("typechecked1:%n%s%n%s".format(typechecked, showRaw(typechecked)))
typechecked
} finally {
popMacroContext()
}
case Fallback(fallback) =>
- typer.typed1(fallback, EXPRmode, WildcardType)
+ typed1Expr(fallback)
case Delayed(delayed) =>
delayed
case Skipped(skipped) =>