@@ -6,44 +6,22 @@ setlocal enabledelayedexpansion
6
6
7
7
set _EXITCODE = 0
8
8
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"
12
15
if not %_EXITCODE% == 0 goto end
13
16
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
-
22
17
call :args %*
23
18
24
19
@ rem #########################################################################
25
20
@ rem ## Main
26
21
27
- call :classpathArgs
22
+ call :compilerJavaClasspathArgs
28
23
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%
47
25
if not %ERRORLEVEL% == 0 (
48
26
set _EXITCODE = 1
49
27
goto end
@@ -54,92 +32,59 @@ goto end
54
32
@ rem ## Subroutines
55
33
56
34
: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 =
64
35
set _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 =
68
40
69
41
:args_loop
70
42
if " %~1 " == " " goto args_done
71
43
set " __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
74
47
) 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
95
52
) 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% "
99
56
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% "
115
80
)
116
81
shift
117
82
goto args_loop
118
83
:args_done
119
84
goto :eof
120
85
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
-
141
86
@ rem output parameter: _JVM_CP_ARGS
142
- :classpathArgs
87
+ :compilerJavaClasspathArgs
143
88
@ rem echo scala3-compiler: %_SCALA3_COMP%
144
89
@ rem echo scala3-interface: %_SCALA3_INTF%
145
90
@ rem echo scala3-library: %_SCALA3_LIB%
@@ -162,9 +107,13 @@ set "__TOOLCHAIN=%__TOOLCHAIN%%_SCALA3_TASTY_INSPECTOR%%_PSEP%"
162
107
set " __TOOLCHAIN = %__TOOLCHAIN%%_JLINE_READER%%_PSEP% "
163
108
set " __TOOLCHAIN = %__TOOLCHAIN%%_JLINE_TERMINAL%%_PSEP% "
164
109
set " __TOOLCHAIN = %__TOOLCHAIN%%_JLINE_TERMINAL_JNA%%_PSEP% "
165
- set " __TOOLCHAIN = %__TOOLCHAIN%%_JNA% "
110
+ set " __TOOLCHAIN = %__TOOLCHAIN%%_JNA%%_PSEP% "
166
111
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
+ )
168
117
goto :eof
169
118
170
119
@ rem #########################################################################
0 commit comments