@@ -26,7 +26,7 @@ trait MemberHandlers {
26
26
import global ._
27
27
import naming ._
28
28
29
- import ReplStrings .{string2codeQuoted , string2code , any2stringOf }
29
+ import ReplStrings .{string2codeQuoted , string2code , any2stringOf , quotedString }
30
30
31
31
private def codegenln (leadingPlus : Boolean , xs : String * ): String = codegen(leadingPlus, (xs ++ Array (" \n " )): _* )
32
32
private def codegenln (xs : String * ): String = codegenln(true , xs : _* )
@@ -133,23 +133,32 @@ trait MemberHandlers {
133
133
else {
134
134
// if this is a lazy val we avoid evaluating it here
135
135
val resultString =
136
- if (mods.isLazy) codegenln(false , " <lazy>" )
137
- else any2stringOf(path, maxStringElements)
136
+ if (mods.isLazy) quotedString(" // unevaluated" )
137
+ else quotedString(" = " ) + " + " + any2stringOf(path, maxStringElements)
138
+
139
+ val varOrValOrLzy =
140
+ if (mods.isMutable) " var"
141
+ else if (mods.isLazy) " lazy val"
142
+ else " val"
143
+
144
+ val nameString = {
145
+ string2code(prettyName) + (
146
+ if (showObjIds) s """ " + f"@ $$ {System.identityHashCode( $path)}%8x" + " """
147
+ else " "
148
+ )
149
+ }
150
+
151
+ val typeString = string2code(req.typeOf(name))
138
152
139
- val nameString = string2code(prettyName) + (if (showObjIds) s """ " + f"@ $$ {System.identityHashCode( $path)}%8x" + " """ else " " )
140
- val typeString = string2code(req typeOf name)
141
- s """ + " $nameString: $typeString = " + $resultString"""
153
+ s """ + " $varOrValOrLzy $nameString: $typeString" + $resultString"""
142
154
}
143
155
}
144
156
}
145
157
146
158
class DefHandler (member : DefDef ) extends MemberDefHandler (member) {
147
159
override def definesValue = flattensToEmpty(member.vparamss) // true if 0-arity
148
- override def resultExtractionCode (req : Request ) = {
149
- val nameString = string2code(name)
150
- val typeString = string2code(req typeOf name)
151
- if (mods.isPublic) s """ + " $nameString: $typeString\\ n" """ else " "
152
- }
160
+ override def resultExtractionCode (req : Request ) =
161
+ if (mods.isPublic) codegenln(s " def ${req.defTypeOf(name)}" ) else " "
153
162
}
154
163
155
164
abstract class MacroHandler (member : DefDef ) extends MemberDefHandler (member) {
@@ -162,36 +171,34 @@ trait MemberHandlers {
162
171
}
163
172
164
173
class TermMacroHandler (member : DefDef ) extends MacroHandler (member) {
165
- def notification (req : Request ) = s " defined term macro $name : $ {req.typeOf (name)}"
174
+ def notification (req : Request ) = s " def $ {req.defTypeOf (name)}"
166
175
}
167
176
168
177
class AssignHandler (member : Assign ) extends MemberHandler (member) {
169
178
override def resultExtractionCode (req : Request ) =
170
- codegenln(s " mutated ${member.lhs}" )
179
+ codegenln(s " // mutated ${member.lhs}" )
171
180
}
172
181
173
182
class ModuleHandler (module : ModuleDef ) extends MemberDefHandler (module) {
174
183
override def definesTerm = Some (name.toTermName)
175
184
override def definesValue = true
176
185
177
- override def resultExtractionCode (req : Request ) = codegenln(" defined object " , name)
186
+ override def resultExtractionCode (req : Request ) = codegenln(s " object $ name" )
178
187
}
179
188
180
189
class ClassHandler (member : ClassDef ) extends MemberDefHandler (member) {
181
190
override def definedSymbols = List (symbol, symbol.companionSymbol) filterNot (_ == NoSymbol )
182
191
override def definesType = Some (name.toTypeName)
183
192
override def definesTerm = Some (name.toTermName) filter (_ => mods.isCase)
184
193
185
- override def resultExtractionCode (req : Request ) =
186
- codegenln(" defined %s %s" .format(keyword, name))
194
+ override def resultExtractionCode (req : Request ) = codegenln(s " $keyword $name" )
187
195
}
188
196
189
197
class TypeAliasHandler (member : TypeDef ) extends MemberDefHandler (member) {
190
198
private def isAlias = mods.isPublic && treeInfo.isAliasTypeDef(member)
191
199
override def definesType = Some (name.toTypeName) filter (_ => isAlias)
192
200
193
- override def resultExtractionCode (req : Request ) =
194
- codegenln(" defined type alias " , name) + " \n "
201
+ override def resultExtractionCode (req : Request ) = codegenln(s " type $name" )
195
202
}
196
203
197
204
class ImportHandler (imp : Import ) extends MemberHandler (imp) {
0 commit comments