diff options
author | Paul Phillips <paulp@improving.org> | 2013-05-18 10:32:06 -0700 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2013-05-18 10:56:57 -0700 |
commit | 2b5e60e8b357b93664706e14437ae954315263e0 (patch) | |
tree | bf11f0a7d330d44c73dd18b5f816d4b86647c19a /src/compiler/scala/tools/nsc/typechecker/Macros.scala | |
parent | 01dec25425cefb6acc147d8341893eb70ca76245 (diff) | |
parent | d93826f278b2ee8be3c4092bf800c2156d35d692 (diff) | |
download | scala-2b5e60e8b357b93664706e14437ae954315263e0.tar.gz scala-2b5e60e8b357b93664706e14437ae954315263e0.tar.bz2 scala-2b5e60e8b357b93664706e14437ae954315263e0.zip |
Merge commit 'd93826f278' into pr/enter-elimination-mode
* commit 'd93826f278':
Incorporated reviewer feedback.
Incorporated reviewer feedback.
Refactored stabilize.
Eliminated HKmode.
Eliminated RETmode.
Eliminated SNDTRYmode.
Started eliminating modes.
Corralling Modes into a smaller pen.
Conflicts:
src/compiler/scala/tools/nsc/typechecker/Macros.scala
src/compiler/scala/tools/nsc/typechecker/RefChecks.scala
src/compiler/scala/tools/nsc/typechecker/Typers.scala
Diffstat (limited to 'src/compiler/scala/tools/nsc/typechecker/Macros.scala')
-rw-r--r-- | src/compiler/scala/tools/nsc/typechecker/Macros.scala | 8 |
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 252ad56b24..5ac37251ee 100644 --- a/src/compiler/scala/tools/nsc/typechecker/Macros.scala +++ b/src/compiler/scala/tools/nsc/typechecker/Macros.scala @@ -365,6 +365,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)) @@ -382,20 +384,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.isTermMacro && !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) => typer.instantiate(delayed, EXPRmode, WildcardType) case Skipped(skipped) => |