@@ -6,44 +6,22 @@ setlocal enabledelayedexpansion
66
77set _EXITCODE = 0
88
9- set " _PROG_HOME = %~dp0 "
10-
11- call " %_PROG_HOME% \common.bat"
9+ for %%f in (" %~dp0 ." ) do (
10+ set " _PROG_HOME = %%~dpf "
11+ @ rem get rid of the trailing slash
12+ set " _PROG_HOME = !_PROG_HOME:~0 ,-1 ! "
13+ )
14+ call " %_PROG_HOME% \bin\common.bat"
1215if not %_EXITCODE% == 0 goto end
1316
14- set _DEFAULT_JAVA_OPTS = -Xmx768m -Xms768m
15- @ rem set _WITH_COMPILER=true
16-
17- set _COMPILER_MAIN = dotty.tools.dotc.Main
18- set _DECOMPILER_MAIN = dotty.tools.dotc.decompiler.Main
19- set _REPL_MAIN = dotty.tools.repl.Main
20- set _SCRIPTING_MAIN = dotty.tools.scripting.Main
21-
2217call :args %*
2318
2419@ rem #########################################################################
2520@ rem ## Main
2621
27- call :classpathArgs
22+ call :compilerJavaClasspathArgs
2823
29- set _SCRIPTING_STRING =
30- if " %_PROG_NAME% " == " %_SCRIPTING_MAIN% " (
31- if not defined _TARGET_SCRIPT (
32- echo Error: Missing Scala script file 1 >& 2
33- set _EXITCODE = 1
34- goto end
35- )
36- set _SCRIPTING_STRING = -script %_TARGET_SCRIPT% %_SCRIPTING_ARGS%
37- )
38-
39- if defined JAVA_OPTS ( set _JAVA_OPTS = %JAVA_OPTS%
40- ) else ( set _JAVA_OPTS = %_DEFAULT_JAVA_OPTS%
41- )
42- for %%i in (" %_PROG_HOME% \.." ) do set " _SCALA_HOME = %%~fi "
43-
44- call " %_JAVACMD% " %_JAVA_OPTS% %_JAVA_DEBUG% %_JAVA_ARGS% %_JVM_CP_ARGS% ^
45- -Dscala.home=" %_SCALA_HOME% " -Dscala.usejavacp=true ^
46- %_PROG_NAME% %_SCALA_ARGS% %_RESIDUAL_ARGS% %_SCRIPTING_STRING%
24+ call " %_JAVACMD% " %_JAVA_ARGS% -classpath " %_JVM_CP_ARGS% " " -Dscala.usejavacp=true" " -Dscala.home=%_PROG_HOME% " dotty.tools.MainGenericCompiler %_SCALA_ARGS%
4725if not %ERRORLEVEL% == 0 (
4826 set _EXITCODE = 1
4927 goto end
@@ -54,92 +32,59 @@ goto end
5432@ rem ## Subroutines
5533
5634:args
57- set _JAVA_DEBUG =
58- set _HELP =
59- set _VERBOSE =
60- set _QUIET =
61- set _COLORS =
62- set _PROG_NAME = %_COMPILER_MAIN%
63- set _SCALA_ARGS =
6435set _JAVA_ARGS =
65- set _RESIDUAL_ARGS =
66- set _SCRIPTING_ARGS =
67- set _TARGET_SCRIPT =
36+ set _SCALA_ARGS =
37+ set _SCALA_CPATH =
38+ @ rem replace inner while loop used in bash script
39+ set _CONSUME_REMAINING =
6840
6941:args_loop
7042if " %~1 " == " " goto args_done
7143set " __ARG = %~1 "
72- if defined _TARGET_SCRIPT (
73- call :addScripting " %__ARG% "
44+ if defined _CONSUME_REMAINING (
45+ set _SCALA_ARGS = !_SCALA_ARGS! " %__ARG% "
46+ shift
7447) else if " %__ARG% " == " --" (
75- @ rem for arg; do addResidual "$arg"; done; set -- ;;
76- ) else if " %__ARG% " == " -h" (
77- set _HELP = true
78- call :addScala " -help"
79- ) else if " %__ARG% " == " -help" (
80- set _HELP = true
81- call :addScala " -help"
82- ) else if " %__ARG% " == " -v" (
83- set _VERBOSE = true
84- call :addScala " -verbose"
85- ) else if " %__ARG% " == " -verbose" (
86- set _VERBOSE = true
87- call :addScala " -verbose"
88- ) else if " %__ARG% " == " -debug" ( set " _JAVA_DEBUG = %_DEBUG_STR% "
89- ) else if " %__ARG% " == " -q" ( set _QUIET = true
90- ) else if " %__ARG% " == " -quiet" ( set _QUIET = true
91- @ rem Optimize for short-running applications, see https://github.com/lampepfl/dotty/issues/222
92- ) else if " %__ARG% " == " -Oshort" (
93- call :addJava " -XX:+TieredCompilation -XX:TieredStopAtLevel=1"
94- ) else if " %__ARG% " == " -repl" ( set _PROG_NAME = %_REPL_MAIN%
48+ @ rem pass all remaining arguments to scala, e.g. to avoid interpreting them here as -D or -J
49+ set _CONSUME_REMAINING = 1
50+ set _SCALA_ARGS = !_SCALA_ARGS! " %__ARG% "
51+ shift
9552) else if " %__ARG% " == " -script" (
96- set _PROG_NAME = %_SCRIPTING_MAIN%
97- if " %~2 " == " " goto args_done
98- set " _TARGET_SCRIPT = %~2 "
53+ @ rem pass all remaining arguments to scala, e.g. to avoid interpreting them here as -D or -J
54+ set _CONSUME_REMAINING = 1
55+ set _SCALA_ARGS = !_SCALA_ARGS! " %__ARG% "
9956 shift
100- ) else if " %__ARG% " == " -compile" ( set _PROG_NAME = %_COMPILER_MAIN%
101- ) else if " %__ARG% " == " -decompile" ( set _PROG_NAME = %_DECOMPILER_MAIN%
102- ) else if " %__ARG% " == " -print-tasty" (
103- set _PROG_NAME = %_DECOMPILER_MAIN%
104- call :addScala " -print-tasty"
105- ) else if " %__ARG% " == " -run" ( set _PROG_NAME = %_REPL_MAIN%
106- ) else if " %__ARG% " == " -colors" ( set _COLORS = true
107- ) else if " %__ARG% " == " -no-colors" ( set _COLORS =
108- ) else if " %__ARG% " == " -with-compiler" ( set " _JVM_CP_ARGS = %_PSEP%%_SCALA3_COMP%%_PSEP%%_TASTY_CORE% "
109- @ rem break out -D and -J options and add them to JAVA_OPTS as well
110- @ rem so they reach the JVM in time to do some good. The -D options
111- @ rem will be available as system properties.
112- ) else if " %__ARG:~0 ,2 % " == " -D" ( call :addJava " %__ARG% "
113- ) else if " %__ARG:~0 ,2 % " == " -J" ( call :addJava " %__ARG:~2 % "
114- ) else ( call :addResidual " %__ARG% "
57+ ) else if " %__ARG% " == " -Oshort" (
58+ @ rem optimize for short-running applications, see https://github.com/lampepfl/dotty/issues/222
59+ set _JAVA_ARGS = !_JAVA_ARGS! " -XX:+TieredCompilation" " -XX:TieredStopAtLevel=1"
60+ set _SCALA_ARGS = !_SCALA_ARGS! -Oshort
61+ shift
62+ ) else if " %__ARG:~0 ,2 % " == " -D" (
63+ @ rem pass to scala as well: otherwise we lose it sometimes when we
64+ @ rem need it, e.g. communicating with a server compiler.
65+ set _JAVA_ARGS = !_JAVA_ARGS! " %__ARG% "
66+ set _SCALA_ARGS = !_SCALA_ARGS! " %__ARG% "
67+ ) else if " %__ARG:~0 ,2 % " == " -J" (
68+ @ rem as with -D, pass to scala even though it will almost
69+ @ rem never be used.
70+ set _JAVA_ARGS = !_JAVA_ARGS! %__ARG:~2 %
71+ set _SCALA_ARGS = !_SCALA_ARGS! " %__ARG% "
72+ ) else if " %__ARG% " == " -classpath" (
73+ set " _SCALA_CPATH = %~2 "
74+ shift
75+ ) else if " %__ARG% " == " -cp" (
76+ set " _SCALA_CPATH = %~2 "
77+ shift
78+ ) else (
79+ set _SCALA_ARGS = !_SCALA_ARGS! " %__ARG% "
11580)
11681shift
11782goto args_loop
11883:args_done
11984goto :eof
12085
121- @ rem output parameter: _SCALA_ARGS
122- :addScala
123- set _SCALA_ARGS = %_SCALA_ARGS% %~1
124- goto :eof
125-
126- @ rem output parameter: _JAVA_ARGS
127- :addJava
128- set _JAVA_ARGS = %_JAVA_ARGS% %~1
129- goto :eof
130-
131- @ rem output parameter: _RESIDUAL_ARGS
132- :addResidual
133- set _RESIDUAL_ARGS = %_RESIDUAL_ARGS% %~1
134- goto :eof
135-
136- @ rem output parameter: _SCRIPTING_ARGS
137- :addScripting
138- set _SCRIPTING_ARGS = %_SCRIPTING_ARGS% %~1
139- goto :eof
140-
14186@ rem output parameter: _JVM_CP_ARGS
142- :classpathArgs
87+ :compilerJavaClasspathArgs
14388@ rem echo scala3-compiler: %_SCALA3_COMP%
14489@ rem echo scala3-interface: %_SCALA3_INTF%
14590@ rem echo scala3-library: %_SCALA3_LIB%
@@ -162,9 +107,13 @@ set "__TOOLCHAIN=%__TOOLCHAIN%%_SCALA3_TASTY_INSPECTOR%%_PSEP%"
162107set " __TOOLCHAIN = %__TOOLCHAIN%%_JLINE_READER%%_PSEP% "
163108set " __TOOLCHAIN = %__TOOLCHAIN%%_JLINE_TERMINAL%%_PSEP% "
164109set " __TOOLCHAIN = %__TOOLCHAIN%%_JLINE_TERMINAL_JNA%%_PSEP% "
165- set " __TOOLCHAIN = %__TOOLCHAIN%%_JNA% "
110+ set " __TOOLCHAIN = %__TOOLCHAIN%%_JNA%%_PSEP% "
166111
167- set _JVM_CP_ARGS = -classpath " %__TOOLCHAIN% "
112+ if defined _SCALA_CPATH (
113+ set " _JVM_CP_ARGS = %__TOOLCHAIN%%_SCALA_CPATH% "
114+ ) else (
115+ set " _JVM_CP_ARGS = %__TOOLCHAIN% "
116+ )
168117goto :eof
169118
170119@ rem #########################################################################
0 commit comments