This mapping has 9 multi-map groups: several pairings are equally correct there. The code view shows one arbitrary valid pairing, not the only one.

Before

…lines 1–102 unchanged (102 lines)
103 ): Seq[T] = {
104 for ((kString, v) <- data.rest.toSeq)
105 yield kString.split(" +") match {
106 case Array(k) => onProperty(k, v)
107 case Array("object", k) => onNestedObject(
108 k,
109 upickle.core.BufferedValue.transform(v, upickle.reader[HeaderData])
110 )
111 case _ => sys.error("Invalid key: " + kString)
112 }
113 }
114
115 val miscInfoWithResource = {
…lines 116–129 unchanged (14 lines)
130 miscInfoWithResource,
131 createFolders = true
132 )
133
134 def renderTemplate(prefix: String, data: HeaderData, path: Seq[String]): String = {
135 val extendsConfig = data.`extends`
136 val definitions = processDataRest(data)(
137 onProperty = (_, _) => "", // Properties will be auto-implemented by AutoOverride
138 onNestedObject = (k, nestedData) =>
139 renderTemplate(s"object $k", nestedData, path :+ k)
140 ).filter(_.nonEmpty)
141
142 def parseRender(moduleDep: String) = {
…lines 143–155 unchanged (13 lines)
156 case s"$externalModulePrefix/" => s"$externalModulePrefix.$renderedSegments"
157 }
158 }
159 }
160
161 val moduleDepsSnippet =
162 if (data.moduleDeps.isEmpty) ""
163 else
164 s"override def moduleDeps = Seq(${data.moduleDeps.map(parseRender).mkString(", ")})"
165
166 val compileModuleDepsSnippet =
167 if (data.compileModuleDeps.isEmpty) ""
168 else
169 s"override def compileModuleDeps = Seq(${data.compileModuleDeps.map(parseRender).mkString(", ")})"
170
171 val runModuleDepsSnippet =
172 if (data.runModuleDeps.isEmpty) ""
173 else
174 s"override def runModuleDeps = Seq(${data.runModuleDeps.map(parseRender).mkString(", ")})"
175
176 val extendsSnippet =
177 if (extendsConfig.nonEmpty)
178 s" extends ${extendsConfig.mkString(", ")}, AutoOverride[_root_.mill.T[?]]"
179 else " extends AutoOverride[_root_.mill.T[?]]"
180
…lines 181–468 unchanged (288 lines)

After

…lines 1–103 unchanged (103 lines)
104 for ((kString, v) <- data.rest.toSeq)
105 yield kString.split(" +") match {
106 case Array(k) => onProperty(k, v)
107 case Array("object", k) => onNestedObject(
108 k,
109 upickle.core.BufferedValue.transform(
110 v,
111 HeaderData.headerDataReader(scriptPath)
112 )
113 )
114 case _ => sys.error("Invalid key: " + kString)
115 }
116 }
117
118 val miscInfoWithResource = {
…lines 119–131 unchanged (13 lines)
132 supportDestDir / "MillMiscInfo.scala",
133 miscInfoWithResource,
134 createFolders = true
135 )
136
137 def renderTemplate(prefix: String, data: HeaderData, path: Seq[String]): String = {
138 val extendsConfig = data.`extends`.value.map(_.value)
139 val definitions = processDataRest(data)(
140 onProperty = (_, _) => "", // Properties will be auto-implemented by AutoOverride
141 onNestedObject = (k, nestedData) =>
142 renderTemplate(s"object $k", nestedData, path :+ k)
143 ).filter(_.nonEmpty)
144
…lines 145–158 unchanged (14 lines)
159 case s"$externalModulePrefix/" => s"$externalModulePrefix.$renderedSegments"
160 }
161 }
162 }
163
164 val moduleDepsSnippet =
165 if (data.moduleDeps.value.isEmpty) ""
166 else
167 s"override def moduleDeps = Seq(${data.moduleDeps.value.map(_.value).map(parseRender).mkString(", ")})"
168
169 val compileModuleDepsSnippet =
170 if (data.compileModuleDeps.value.isEmpty) ""
171 else
172 s"override def compileModuleDeps = Seq(${data.compileModuleDeps.value.map(_.value).map(parseRender).mkString(", ")})"
173
174 val runModuleDepsSnippet =
175 if (data.runModuleDeps.value.isEmpty) ""
176 else
177 s"override def runModuleDeps = Seq(${data.runModuleDeps.value.map(_.value).map(parseRender).mkString(", ")})"
178
179 val extendsSnippet =
180 if (extendsConfig.nonEmpty)
181 s" extends ${extendsConfig.mkString(", ")}, AutoOverride[_root_.mill.T[?]]"
182 else " extends AutoOverride[_root_.mill.T[?]]"
183
…lines 184–471 unchanged (288 lines)

Before

compilation_unit
package_clause
package "package"
package_identifier
identifier "mill"
. "."
identifier "meta"
import_declaration
import "import"
identifier "scala"
. "."
identifier "jdk"
. "."
identifier "CollectionConverters"
. "."
identifier "CollectionHasAsScala"
import_declaration
import "import"
identifier "mill"
. "."
identifier "constants"
. "."
as_renamed_identifier
identifier "CodeGenConstants"
as "as"
identifier "CGConst"
import_declaration
import "import"
identifier "mill"
. "."
identifier "api"
. "."
identifier "Result"
import_declaration
import "import"
identifier "mill"
. "."
identifier "internal"
. "."
identifier "Util"
. "."
identifier "backtickWrap"
import_declaration
import "import"
identifier "pprint"
. "."
identifier "Util"
. "."
identifier "literalize"
import_declaration
import "import"
identifier "mill"
. "."
identifier "api"
. "."
identifier "daemon"
. "."
identifier "internal"
. "."
identifier "MillScalaParser"
import_declaration
import "import"
identifier "mill"
. "."
identifier "api"
. "."
identifier "ModuleCtx"
. "."
identifier "HeaderData"
import_declaration
import "import"
identifier "mill"
. "."
identifier "api"
. "."
identifier "daemon"
. "."
identifier "Segment"
import_declaration
import "import"
identifier "scala"
. "."
identifier "util"
. "."
identifier "control"
. "."
identifier "Breaks"
. "."
namespace_wildcard
* "*"
object_definition
object "object"
identifier "CodeGen"
template_body
{ "{"
val_definition (+24 nodes collapsed)
function_definition
def "def"
identifier "generateWrappedAndSupportSources"
parameters (+70 nodes collapsed)
: ":"
type_identifier "Unit"
= "="
block
{ "{"
val_definition
val "val"
identifier "scriptSources"
= "="
field_expression
field_expression
field_expression
identifier "allScriptCode"
. "."
identifier "keys"
. "."
identifier "toSeq"
. "."
identifier "sorted"
comment
// "//"
comment
// "//"
comment
// "//"
val_definition
val "val"
identifier "aliasImports"
= "="
string "\"import build_.{package_ => build}\""
for_expression
for "for"
( "("
enumerators
enumerator
identifier "scriptPath"
<- "<-"
identifier "scriptSources"
) ")"
block
{ "{"
val_definition
val "val"
identifier "scriptFolderPath"
= "="
infix_expression
identifier "scriptPath"
operator_identifier "/"
field_expression
identifier "os"
. "."
identifier "up"
val_definition
val "val"
identifier "packageSegments"
= "="
call_expression
field_expression
identifier "FileImportGraph"
. "."
identifier "fileImportToSegments"
arguments
( "("
identifier "projectRoot"
, ","
identifier "scriptPath"
) ")"
val_definition
val "val"
identifier "wrappedDestFile"
= "="
infix_expression
identifier "wrappedDest"
operator_identifier "/"
identifier "packageSegments"
val_definition (+21 nodes collapsed)
function_definition (+53 nodes collapsed)
val_definition
val "val"
identifier "pkg"
= "="
call_expression
identifier "pkgSelector0"
arguments
( "("
call_expression
identifier "Some"
arguments
( "("
field_expression
identifier "CGConst"
. "."
identifier "globalPackagePrefix"
) ")"
, ","
identifier "None"
) ")"
val_definition
val "val"
identifier "segments"
= "="
call_expression
identifier "calcSegments"
arguments
( "("
identifier "scriptFolderPath"
, ","
identifier "projectRoot"
) ")"
val_definition
val "val"
identifier "supportDestDir"
= "="
infix_expression
infix_expression
identifier "supportDest"
operator_identifier "/"
identifier "packageSegments"
operator_identifier "/"
field_expression
identifier "os"
. "."
identifier "up"
val_definition (+73 nodes collapsed)
function_definition (+42 nodes collapsed)
val_definition (+76 nodes collapsed)
if_expression (+45 nodes collapsed)
val_definition (+33 nodes collapsed)
if_expression
if "if"
parenthesized_expression
( "("
call_expression
field_expression
field_expression
identifier "scriptPath"
. "."
identifier "last"
. "."
identifier "endsWith"
arguments
( "("
string "\".yaml\""
) ")"
) ")"
block
{ "{"
val_definition
val "val"
identifier "newParent"
= "="
indented_block
if_expression
if "if"
parenthesized_expression
( "("
field_expression
identifier "segments"
. "."
identifier "isEmpty"
) ")"
string "\"_root_.mill.util.MainRootModule\""
else "else"
string "\"_root_.mill.api.internal.SubfolderModule(build.millDiscover"...
val_definition (+22 nodes collapsed)
val_definition
val "val"
identifier "prelude"
= "="
indented_block
field_expression
interpolated_string_expression
identifier "s"
interpolated_string
""" "\"\"\""
. "."
identifier "stripMargin"
function_definition
def "def"
identifier "processDataRest"
type_parameters
[ "["
identifier "T"
] "]"
parameters
( "("
parameter
identifier "data"
: ":"
type_identifier "HeaderData"
) ")"
parameters (+34 nodes collapsed)
: ":"
generic_type
type_identifier "Seq"
type_arguments
[ "["
type_identifier "T"
] "]"
= "="
block
{ "{"
for_expression
for "for"
( "("
enumerators
enumerator
tuple_pattern
( "("
identifier "kString"
, ","
identifier "v"
) ")"
<- "<-"
field_expression
field_expression
identifier "data"
. "."
identifier "rest"
. "."
identifier "toSeq"
) ")"
yield "yield"
match_expression
call_expression
field_expression
identifier "kString"
. "."
identifier "split"
arguments
( "("
string "\" +\""
) ")"
match "match"
case_block
{ "{"
case_clause
case "case"
case_class_pattern
type_identifier "Array"
( "("
identifier "k"
) ")"
=> "=>"
call_expression
identifier "onProperty"
arguments
( "("
identifier "k"
, ","
identifier "v"
) ")"
case_clause
case "case"
case_class_pattern
type_identifier "Array"
( "("
string "\"object\""
, ","
identifier "k"
) ")"
=> "=>"
call_expression
identifier "onNestedObject"
arguments
( "("
identifier "k"
, ","
call_expression
field_expression
field_expression
field_expression
identifier "upickle"
. "."
identifier "core"
. "."
identifier "BufferedValue"
. "."
identifier "transform"
arguments
( "("
identifier "v"
, ","
generic_function
field_expression
identifier "upickle"
. "."
identifier "reader"
type_arguments
[ "["
type_identifier "HeaderData"
] "]"
) ")"
) ")"
case_clause
case "case"
wildcard
_ "_"
=> "=>"
call_expression
field_expression
identifier "sys"
. "."
identifier "error"
arguments
( "("
infix_expression
string "\"Invalid key: \""
operator_identifier "+"
identifier "kString"
) ")"
} "}"
} "}"
val_definition (+87 nodes collapsed)
call_expression (+23 nodes collapsed)
function_definition
def "def"
identifier "renderTemplate"
parameters (+22 nodes collapsed)
: ":"
type_identifier "String"
= "="
block
{ "{"
val_definition
val "val"
identifier "extendsConfig"
= "="
field_expression
identifier "data"
. "."
identifier "`extends`"
val_definition (+78 nodes collapsed)
function_definition (+201 nodes collapsed)
val_definition
val "val"
identifier "moduleDepsSnippet"
= "="
indented_block
if_expression
if "if"
parenthesized_expression
( "("
field_expression any 2:3
field_expression any 2:3
identifier "data"
. "."
identifier "moduleDeps"
. "."
identifier "isEmpty"
) ")"
string "\"\""
else "else"
indented_block
interpolated_string_expression
identifier "s"
interpolated_string
" "\""
interpolation
$ "$"
block
{ "{"
call_expression any 2:3
field_expression any 3:5
call_expression any 2:3
field_expression any 3:5
field_expression any 3:5
identifier "data"
. "."
identifier "moduleDeps"
. "."
identifier "map"
arguments
( "("
identifier "parseRender"
) ")"
. "."
identifier "mkString"
arguments
( "("
string "\", \""
) ")"
} "}"
val_definition
val "val"
identifier "compileModuleDepsSnippet"
= "="
indented_block
if_expression
if "if"
parenthesized_expression
( "("
field_expression any 2:3
field_expression any 2:3
identifier "data"
. "."
identifier "compileModuleDeps"
. "."
identifier "isEmpty"
) ")"
string "\"\""
else "else"
indented_block
interpolated_string_expression
identifier "s"
interpolated_string
" "\""
interpolation
$ "$"
block
{ "{"
call_expression any 2:3
field_expression any 3:5
call_expression any 2:3
field_expression any 3:5
field_expression any 3:5
identifier "data"
. "."
identifier "compileModuleDeps"
. "."
identifier "map"
arguments
( "("
identifier "parseRender"
) ")"
. "."
identifier "mkString"
arguments
( "("
string "\", \""
) ")"
} "}"
val_definition
val "val"
identifier "runModuleDepsSnippet"
= "="
indented_block
if_expression
if "if"
parenthesized_expression
( "("
field_expression any 2:3
field_expression any 2:3
identifier "data"
. "."
identifier "runModuleDeps"
. "."
identifier "isEmpty"
) ")"
string "\"\""
else "else"
indented_block
interpolated_string_expression
identifier "s"
interpolated_string
" "\""
interpolation
$ "$"
block
{ "{"
call_expression any 2:3
field_expression any 3:5
call_expression any 2:3
field_expression any 3:5
field_expression any 3:5
identifier "data"
. "."
identifier "runModuleDeps"
. "."
identifier "map"
arguments
( "("
identifier "parseRender"
) ")"
. "."
identifier "mkString"
arguments
( "("
string "\", \""
) ")"
} "}"
val_definition (+35 nodes collapsed)
val_definition (+31 nodes collapsed)
field_expression (+28 nodes collapsed)
} "}"
call_expression (+99 nodes collapsed)
} "}"
else "else"
block (+465 nodes collapsed)
} "}"
} "}"
function_definition (+38 nodes collapsed)
function_definition (+128 nodes collapsed)
function_definition (+36 nodes collapsed)
function_definition (+740 nodes collapsed)
function_definition (+78 nodes collapsed)
function_definition (+39 nodes collapsed)
function_definition (+84 nodes collapsed)
} "}"

After

compilation_unit
package_clause
package "package"
package_identifier
identifier "mill"
. "."
identifier "meta"
import_declaration
import "import"
identifier "scala"
. "."
identifier "jdk"
. "."
identifier "CollectionConverters"
. "."
identifier "CollectionHasAsScala"
import_declaration
import "import"
identifier "mill"
. "."
identifier "constants"
. "."
as_renamed_identifier
identifier "CodeGenConstants"
as "as"
identifier "CGConst"
import_declaration
import "import"
identifier "mill"
. "."
identifier "api"
. "."
identifier "Result"
import_declaration
import "import"
identifier "mill"
. "."
identifier "internal"
. "."
identifier "Util"
. "."
identifier "backtickWrap"
import_declaration
import "import"
identifier "pprint"
. "."
identifier "Util"
. "."
identifier "literalize"
import_declaration
import "import"
identifier "mill"
. "."
identifier "api"
. "."
identifier "daemon"
. "."
identifier "internal"
. "."
identifier "MillScalaParser"
import_declaration
import "import"
identifier "mill"
. "."
identifier "api"
. "."
identifier "ModuleCtx"
. "."
identifier "HeaderData"
import_declaration
import "import"
identifier "mill"
. "."
identifier "api"
. "."
identifier "daemon"
. "."
identifier "Segment"
import_declaration
import "import"
identifier "scala"
. "."
identifier "util"
. "."
identifier "control"
. "."
identifier "Breaks"
. "."
namespace_wildcard
* "*"
object_definition
object "object"
identifier "CodeGen"
template_body
{ "{"
val_definition (+24 nodes collapsed)
function_definition
def "def"
identifier "generateWrappedAndSupportSources"
parameters (+70 nodes collapsed)
: ":"
type_identifier "Unit"
= "="
block
{ "{"
val_definition
val "val"
identifier "scriptSources"
= "="
field_expression
field_expression
field_expression
identifier "allScriptCode"
. "."
identifier "keys"
. "."
identifier "toSeq"
. "."
identifier "sorted"
comment
// "//"
comment
// "//"
comment
// "//"
val_definition
val "val"
identifier "aliasImports"
= "="
string "\"import build_.{package_ => build}\""
for_expression
for "for"
( "("
enumerators
enumerator
identifier "scriptPath"
<- "<-"
identifier "scriptSources"
) ")"
block
{ "{"
val_definition
val "val"
identifier "scriptFolderPath"
= "="
infix_expression
identifier "scriptPath"
operator_identifier "/"
field_expression
identifier "os"
. "."
identifier "up"
val_definition
val "val"
identifier "packageSegments"
= "="
call_expression
field_expression
identifier "FileImportGraph"
. "."
identifier "fileImportToSegments"
arguments
( "("
identifier "projectRoot"
, ","
identifier "scriptPath"
) ")"
val_definition
val "val"
identifier "wrappedDestFile"
= "="
infix_expression
identifier "wrappedDest"
operator_identifier "/"
identifier "packageSegments"
val_definition (+21 nodes collapsed)
function_definition (+53 nodes collapsed)
val_definition
val "val"
identifier "pkg"
= "="
call_expression
identifier "pkgSelector0"
arguments
( "("
call_expression
identifier "Some"
arguments
( "("
field_expression
identifier "CGConst"
. "."
identifier "globalPackagePrefix"
) ")"
, ","
identifier "None"
) ")"
val_definition
val "val"
identifier "segments"
= "="
call_expression
identifier "calcSegments"
arguments
( "("
identifier "scriptFolderPath"
, ","
identifier "projectRoot"
) ")"
val_definition
val "val"
identifier "supportDestDir"
= "="
infix_expression
infix_expression
identifier "supportDest"
operator_identifier "/"
identifier "packageSegments"
operator_identifier "/"
field_expression
identifier "os"
. "."
identifier "up"
val_definition (+73 nodes collapsed)
function_definition (+42 nodes collapsed)
val_definition (+76 nodes collapsed)
if_expression (+45 nodes collapsed)
val_definition (+33 nodes collapsed)
if_expression
if "if"
parenthesized_expression
( "("
call_expression
field_expression
field_expression
identifier "scriptPath"
. "."
identifier "last"
. "."
identifier "endsWith"
arguments
( "("
string "\".yaml\""
) ")"
) ")"
block
{ "{"
val_definition
val "val"
identifier "newParent"
= "="
indented_block
if_expression
if "if"
parenthesized_expression
( "("
field_expression
identifier "segments"
. "."
identifier "isEmpty"
) ")"
string "\"_root_.mill.util.MainRootModule\""
else "else"
string "\"_root_.mill.api.internal.SubfolderModule(build.millDiscover"...
val_definition (+22 nodes collapsed)
val_definition
val "val"
identifier "prelude"
= "="
indented_block
field_expression
interpolated_string_expression
identifier "s"
interpolated_string
""" "\"\"\""
. "."
identifier "stripMargin"
function_definition
def "def"
identifier "processDataRest"
type_parameters
[ "["
identifier "T"
] "]"
parameters
( "("
parameter
identifier "data"
: ":"
type_identifier "HeaderData"
) ")"
parameters (+34 nodes collapsed)
: ":"
generic_type
type_identifier "Seq"
type_arguments
[ "["
type_identifier "T"
] "]"
= "="
block
{ "{"
for_expression
for "for"
( "("
enumerators
enumerator
tuple_pattern
( "("
identifier "kString"
, ","
identifier "v"
) ")"
<- "<-"
field_expression
field_expression
identifier "data"
. "."
identifier "rest"
. "."
identifier "toSeq"
) ")"
yield "yield"
match_expression
call_expression
field_expression
identifier "kString"
. "."
identifier "split"
arguments
( "("
string "\" +\""
) ")"
match "match"
case_block
{ "{"
case_clause
case "case"
case_class_pattern
type_identifier "Array"
( "("
identifier "k"
) ")"
=> "=>"
call_expression
identifier "onProperty"
arguments
( "("
identifier "k"
, ","
identifier "v"
) ")"
case_clause
case "case"
case_class_pattern
type_identifier "Array"
( "("
string "\"object\""
, ","
identifier "k"
) ")"
=> "=>"
call_expression
identifier "onNestedObject"
arguments
( "("
identifier "k"
, ","
call_expression
field_expression
field_expression
field_expression
identifier "upickle"
. "."
identifier "core"
. "."
identifier "BufferedValue"
. "."
identifier "transform"
arguments
( "("
identifier "v"
, ","
call_expression
field_expression
identifier "HeaderData"
. "."
identifier "headerDataReader"
arguments
( "("
identifier "scriptPath"
) ")"
) ")"
) ")"
case_clause
case "case"
wildcard
_ "_"
=> "=>"
call_expression
field_expression
identifier "sys"
. "."
identifier "error"
arguments
( "("
infix_expression
string "\"Invalid key: \""
operator_identifier "+"
identifier "kString"
) ")"
} "}"
} "}"
val_definition (+87 nodes collapsed)
call_expression (+23 nodes collapsed)
function_definition
def "def"
identifier "renderTemplate"
parameters (+22 nodes collapsed)
: ":"
type_identifier "String"
= "="
block
{ "{"
val_definition
val "val"
identifier "extendsConfig"
= "="
call_expression
field_expression
field_expression
field_expression
identifier "data"
. "."
identifier "`extends`"
. "."
identifier "value"
. "."
identifier "map"
arguments
( "("
field_expression
wildcard
_ "_"
. "."
identifier "value"
) ")"
val_definition (+78 nodes collapsed)
function_definition (+201 nodes collapsed)
val_definition
val "val"
identifier "moduleDepsSnippet"
= "="
indented_block
if_expression
if "if"
parenthesized_expression
( "("
field_expression any 2:3
field_expression any 2:3
field_expression any 2:3
identifier "data"
. "."
identifier "moduleDeps"
. "."
identifier "value"
. "."
identifier "isEmpty"
) ")"
string "\"\""
else "else"
indented_block
interpolated_string_expression
identifier "s"
interpolated_string
" "\""
interpolation
$ "$"
block
{ "{"
call_expression any 2:3
field_expression any 3:5
call_expression any 2:3
field_expression any 3:5
call_expression any 2:3
field_expression any 3:5
field_expression any 3:5
field_expression any 3:5
identifier "data"
. "."
identifier "moduleDeps"
. "."
identifier "value"
. "."
identifier "map"
arguments
( "("
field_expression
wildcard
_ "_"
. "."
identifier "value"
) ")"
. "."
identifier "map"
arguments
( "("
identifier "parseRender"
) ")"
. "."
identifier "mkString"
arguments
( "("
string "\", \""
) ")"
} "}"
val_definition
val "val"
identifier "compileModuleDepsSnippet"
= "="
indented_block
if_expression
if "if"
parenthesized_expression
( "("
field_expression any 2:3
field_expression any 2:3
field_expression any 2:3
identifier "data"
. "."
identifier "compileModuleDeps"
. "."
identifier "value"
. "."
identifier "isEmpty"
) ")"
string "\"\""
else "else"
indented_block
interpolated_string_expression
identifier "s"
interpolated_string
" "\""
interpolation
$ "$"
block
{ "{"
call_expression any 2:3
field_expression any 3:5
call_expression any 2:3
field_expression any 3:5
call_expression any 2:3
field_expression any 3:5
field_expression any 3:5
field_expression any 3:5
identifier "data"
. "."
identifier "compileModuleDeps"
. "."
identifier "value"
. "."
identifier "map"
arguments
( "("
field_expression
wildcard
_ "_"
. "."
identifier "value"
) ")"
. "."
identifier "map"
arguments
( "("
identifier "parseRender"
) ")"
. "."
identifier "mkString"
arguments
( "("
string "\", \""
) ")"
} "}"
val_definition
val "val"
identifier "runModuleDepsSnippet"
= "="
indented_block
if_expression
if "if"
parenthesized_expression
( "("
field_expression any 2:3
field_expression any 2:3
field_expression any 2:3
identifier "data"
. "."
identifier "runModuleDeps"
. "."
identifier "value"
. "."
identifier "isEmpty"
) ")"
string "\"\""
else "else"
indented_block
interpolated_string_expression
identifier "s"
interpolated_string
" "\""
interpolation
$ "$"
block
{ "{"
call_expression any 2:3
field_expression any 3:5
call_expression any 2:3
field_expression any 3:5
call_expression any 2:3
field_expression any 3:5
field_expression any 3:5
field_expression any 3:5
identifier "data"
. "."
identifier "runModuleDeps"
. "."
identifier "value"
. "."
identifier "map"
arguments
( "("
field_expression
wildcard
_ "_"
. "."
identifier "value"
) ")"
. "."
identifier "map"
arguments
( "("
identifier "parseRender"
) ")"
. "."
identifier "mkString"
arguments
( "("
string "\", \""
) ")"
} "}"
val_definition (+35 nodes collapsed)
val_definition (+31 nodes collapsed)
field_expression (+28 nodes collapsed)
} "}"
call_expression (+99 nodes collapsed)
} "}"
else "else"
block (+465 nodes collapsed)
} "}"
} "}"
function_definition (+38 nodes collapsed)
function_definition (+128 nodes collapsed)
function_definition (+36 nodes collapsed)
function_definition (+740 nodes collapsed)
function_definition (+78 nodes collapsed)
function_definition (+39 nodes collapsed)
function_definition (+84 nodes collapsed)
} "}"