summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/interpreter/MemberHandlers.scala
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2011-05-27 00:10:39 +0000
committerPaul Phillips <paulp@improving.org>2011-05-27 00:10:39 +0000
commitd76dc724e319663b6f854ecade8524323a576ea8 (patch)
treec72f205509380a51a5834413b0503f8dd8ede2b2 /src/compiler/scala/tools/nsc/interpreter/MemberHandlers.scala
parentd800ebd073bbbaddfc5df200a84c355ce36eeeed (diff)
downloadscala-d76dc724e319663b6f854ecade8524323a576ea8.tar.gz
scala-d76dc724e319663b6f854ecade8524323a576ea8.tar.bz2
scala-d76dc724e319663b6f854ecade8524323a576ea8.zip
Overcoming limitations of the repl, multiple-tr...
Overcoming limitations of the repl, multiple-tree lines and assignments. The best part of nicely documented limitations is that you can stare at the same comment for years and then the day comes when you give it the heave-ho. Exhibit A (regarding a single bare expression): "This is necessary due to it being hard to modify code at a textual level, and it being hard to submit an AST to the compiler." Yes, it IS hard to modify code at a textual level (see enclosed patch) but we won't let that stop us anymore. Closes #4578. Exhibit B (regarding the left hand side of assignments having to be Ident): "An unfortunate limitation." Unfortunate no longer! No review.
Diffstat (limited to 'src/compiler/scala/tools/nsc/interpreter/MemberHandlers.scala')
-rw-r--r--src/compiler/scala/tools/nsc/interpreter/MemberHandlers.scala20
1 files changed, 10 insertions, 10 deletions
diff --git a/src/compiler/scala/tools/nsc/interpreter/MemberHandlers.scala b/src/compiler/scala/tools/nsc/interpreter/MemberHandlers.scala
index 99112d9151..33f21165b4 100644
--- a/src/compiler/scala/tools/nsc/interpreter/MemberHandlers.scala
+++ b/src/compiler/scala/tools/nsc/interpreter/MemberHandlers.scala
@@ -52,15 +52,15 @@ trait MemberHandlers {
}
def chooseHandler(member: Tree): MemberHandler = member match {
- case member: DefDef => new DefHandler(member)
- case member: ValDef => new ValHandler(member)
- case member@Assign(Ident(_), _) => new AssignHandler(member)
- case member: ModuleDef => new ModuleHandler(member)
- case member: ClassDef => new ClassHandler(member)
- case member: TypeDef => new TypeAliasHandler(member)
- case member: Import => new ImportHandler(member)
- case DocDef(_, documented) => chooseHandler(documented)
- case member => new GenericHandler(member)
+ case member: DefDef => new DefHandler(member)
+ case member: ValDef => new ValHandler(member)
+ case member: Assign => new AssignHandler(member)
+ case member: ModuleDef => new ModuleHandler(member)
+ case member: ClassDef => new ClassHandler(member)
+ case member: TypeDef => new TypeAliasHandler(member)
+ case member: Import => new ImportHandler(member)
+ case DocDef(_, documented) => chooseHandler(documented)
+ case member => new GenericHandler(member)
}
sealed abstract class MemberDefHandler(override val member: MemberDef) extends MemberHandler(member) {
@@ -129,7 +129,7 @@ trait MemberHandlers {
}
class AssignHandler(member: Assign) extends MemberHandler(member) {
- val lhs = member.lhs.asInstanceOf[Ident] // an unfortunate limitation
+ val Assign(lhs, rhs) = member
val name = newTermName(freshInternalVarName())
override def definesTerm = Some(name)