summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/typechecker/Macros.scala
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2013-05-18 10:32:06 -0700
committerPaul Phillips <paulp@improving.org>2013-05-18 10:56:57 -0700
commit2b5e60e8b357b93664706e14437ae954315263e0 (patch)
treebf11f0a7d330d44c73dd18b5f816d4b86647c19a /src/compiler/scala/tools/nsc/typechecker/Macros.scala
parent01dec25425cefb6acc147d8341893eb70ca76245 (diff)
parentd93826f278b2ee8be3c4092bf800c2156d35d692 (diff)
downloadscala-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.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 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) =>