Skip to content

Commit

Permalink
fix issue scala#12551
Browse files Browse the repository at this point in the history
  • Loading branch information
michelou committed Jul 2, 2021
1 parent 147e9ba commit 9691698
Show file tree
Hide file tree
Showing 5 changed files with 541 additions and 0 deletions.
57 changes: 57 additions & 0 deletions dist/bin/common.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
@rem #########################################################################
@rem ## Code common to scalac.bat, scaladoc.bat and scala.bat

if defined JAVACMD (
set "_JAVACMD=%JAVACMD%"
) else if defined JAVA_HOME (
set "_JAVACMD=%JAVA_HOME%\bin\java.exe"
) else if defined JDK_HOME (
set "_JAVACMD=%JDK_HOME%\bin\java.exe"
) else (
where /q java.exe
if !ERRORLEVEL!==0 (
set __JAVA_BIN_DIR=
for /f "delims=" %%i in ('where /f java.exe') do (
set "__PATH=%%~dpi"
@rem we take first occurence and ignore Oracle path for java executable
if not defined __JAVA_BIN_DIR if "!__PATH!"=="!__PATH:javapath=!" set "__JAVA_BIN_DIR=!__PATH!"
)
if defined __JAVA_BIN_DIR set "_JAVACMD=!__JAVA_BIN_DIR!\java.exe"
)
if not defined _JAVACMD (
set "__PATH=%ProgramFiles%\Java"
for /f %%f in ('dir /ad /b "!__PATH!\jre*" 2^>NUL') do set "_JAVA_HOME=!__PATH!\%%f"
if not defined _JAVA_HOME (
set __PATH=C:\opt
for /f %%f in ('dir /ad /b "!__PATH!\jdk*" 2^>NUL') do set "_JAVA_HOME=!__PATH!\%%f\jre"
)
if defined _JAVA_HOME set "_JAVACMD=!_JAVA_HOME!\bin\java.exe"
)
)
if not exist "%_JAVACMD%" (
echo Error: Java executable not found ^(!_JAVACMD!^) 1>&2
set _EXITCODE=1
goto :eof
)

if not defined _PROG_HOME set "_PROG_HOME=%~dp0"
for /f %%f in ("%_PROG_HOME%\.") do set "_LIB_DIR=%%~dpflib"

set _PSEP=;

for /f %%f in ('dir /a-d /b "%_LIB_DIR%\*scala3-compiler*"') do set "_SCALA3_COMP=%_LIB_DIR%\%%f"
for /f %%f in ('dir /a-d /b "%_LIB_DIR%\*scala3-interfaces*"') do set "_SCALA3_INTF=%_LIB_DIR%\%%f"
for /f %%f in ('dir /a-d /b "%_LIB_DIR%\*scala3-library*"') do set "_SCALA3_LIB=%_LIB_DIR%\%%f"
for /f %%f in ('dir /a-d /b "%_LIB_DIR%\*scala3-staging*"') do set "_SCALA3_STAGING=%_LIB_DIR%\%%f"
for /f %%f in ('dir /a-d /b "%_LIB_DIR%\*scala3-tasty-inspector*"') do set "_SCALA3_TASTY_INSPECTOR=%_LIB_DIR%\%%f"
for /f %%f in ('dir /a-d /b "%_LIB_DIR%\*tasty-core*"') do set "_TASTY_CORE=%_LIB_DIR%\%%f"
for /f %%f in ('dir /a-d /b "%_LIB_DIR%\*scala-asm*"') do set "_SCALA_ASM=%_LIB_DIR%\%%f"
for /f %%f in ('dir /a-d /b "%_LIB_DIR%\*scala-library*"') do set "_SCALA_LIB=%_LIB_DIR%\%%f"
for /f %%f in ('dir /a-d /b "%_LIB_DIR%\*compiler-interface*"') do set "_SBT_INTF=%_LIB_DIR%\%%f"
for /f %%f in ('dir /a-d /b "%_LIB_DIR%\*jline-reader-3*"') do set "_JLINE_READER=%_LIB_DIR%\%%f"
for /f %%f in ('dir /a-d /b "%_LIB_DIR%\*jline-terminal-3*"') do set "_JLINE_TERMINAL=%_LIB_DIR%\%%f"
for /f %%f in ('dir /a-d /b "%_LIB_DIR%\*jline-terminal-jna-3*"') do set "_JLINE_TERMINAL_JNA=%_LIB_DIR%\%%f"
for /f %%f in ('dir /a-d /b "%_LIB_DIR%\*jna-5*"') do set "_JNA=%_LIB_DIR%\%%f"

@rem debug
set _DEBUG_STR=-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005
124 changes: 124 additions & 0 deletions dist/bin/scala.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
@echo off
setlocal enabledelayedexpansion

@rem #########################################################################
@rem ## Environment setup

set _EXITCODE=0

set "_PROG_HOME=%~dp0"

call "%_PROG_HOME%\common.bat"
if not %_EXITCODE%==0 goto end

call :args %*

@rem #########################################################################
@rem ## Main

set _CASE_REPL=0
if %_EXECUTE_REPL%==1 set _CASE_REPL=1
if %_EXECUTE_RUN%==0 if %_OPTIONS_INDICATOR%==0 set _CASE_REPL=1

set _CASE_EXEC=0
if %_EXECUTE_REPL%==1 set _CASE_EXEC=1
if defined _RESIDUAL_ARGS set _CASE_EXEC=1

if %_EXECUTE_SCRIPT%==1 (
set _SCALAC_ARGS=
if defined _CLASS_PATH set _SCALAC_ARGS=-classpath "%_CLASS_PATH%"
set _RESIDUAL_ARGS=!_RESIDUAL_ARGS! "-Dscript.path=%_TARGET_SCRIPT%"
set _SCALAC_ARGS=!_SCALAC_ARGS! %_JAVA_OPTS% !_RESIDUAL_ARGS! -script "%_TARGET_SCRIPT%" %_SCRIPT_ARGS%
call "%_PROG_HOME%\scalac.bat" !_SCALAC_ARGS!
if not !ERRORLEVEL!==0 ( set _EXITCODE=1& goto end )
@rem if [ $execute_repl == true ] || ([ $execute_run == false ] && [ $options_indicator == 0 ]); then
) else if %_CASE_REPL%==1 (
set _SCALAC_ARGS=
if defined _CLASS_PATH set _SCALAC_ARGS=-classpath "%_CLASS_PATH%"
set _SCALAC_ARGS=!_SCALAC_ARGS! %_JAVA_OPTS% -repl %_RESIDUAL_ARGS%
call "%_PROG_HOME%\scalac.bat" !_SCALAC_ARGS!
if not !ERRORLEVEL!==0 ( set _EXITCODE=1& goto end )
@rem elif [ $execute_repl == true ] || [ ${#residual_args[@]} -ne 0 ]; then
) else if %_CASE_EXEC%==1 (
set "_CP_ARG=%_SCALA3_LIB%%_PSEP%%_SCALA_LIB%"
if defined _CLASS_PATH ( set "_CP_ARG=!_CP_ARG!%_PSEP%%_CLASS_PATH%"
) else ( set "_CP_ARG=!_CP_ARG!%_PSEP%."
)
if %_CLASS_PATH_COUNT% gtr 1 (
echo Warning: Multiple classpaths are found, scala only use the last one. 1>&2
)
if %_WITH_COMPILER%==1 (
set "_CP_ARG=!_CP_ARG!%_PSEP%%_SCALA3_COMP%%_PSEP%%_TASTY_CORE%%_PSEP%%_SCALA3_INTF%%_PSEP%%_SCALA_ASM%%_PSEP%%_SCALA3_STAGING%%_PSEP%%_SCALA3_TASTY_INSPECTOR%"
)
set _JAVA_ARGS=%_JAVA_DEBUG% -classpath "!_CP_ARG!" %_JVM_OPTS% %_RESIDUAL_ARGS%
call "%_JAVACMD%" !_JAVA_ARGS!
if not !ERRORLEVEL!==0 ( set _EXITCODE=1& goto end )
) else (
echo Warning: Command option is not correct. 1>&2
)

goto end

@rem #########################################################################
@rem ## Subroutines

:args
set _RESIDUAL_ARGS=
set _SCRIPT_ARGS=
set _EXECUTE_REPL=0
set _EXECUTE_RUN=0
set _EXECUTE_SCRIPT=0
set _TARGET_SCRIPT=
set _WITH_COMPILER=0
set _JAVA_DEBUG=
set _CLASS_PATH_COUNT=0
set _CLASS_PATH=
set _JVM_OPTS=
set _JAVA_OPTS=
set _OPTIONS_INDICATOR=0

:args_loop
if "%~1"=="" goto args_done
set "__ARG=%~1"
if "%__ARG%"=="-repl" (
set _EXECUTE_REPL=1
) else if "%__ARG%"=="-run" (
set _EXECUTE_RUN=1
) else if "%__ARG%"=="-classpath" (
set "_CLASS_PATH=%~2"
set /a _CLASS_PATH_COUNT+=1
shift
) else if "%__ARG%"=="-cp" (
set "_CLASS_PATH=%~2"
set /a _CLASS_PATH_COUNT+=1
shift
) else if "%__ARG%"=="-with-compiler" (
set _WITH_COMPILER=1
) else if "%__ARG%"=="-d" (
set "_JAVA_DEBUG=%_DEBUG_STR%"
) else if "%__ARG:~0,2%"=="-J" (
set _JVM_OPTS=!_JVM_OPTS! %__ARG:~2%
set _JAVA_OPTS=!_JAVA_OPTS! %__ARG%
) else (
@rem _OPTIONS_INDICATOR != 0 if at least one parameter is not an option
if not "%__ARG:~0,1%"=="-" set /a _OPTIONS_INDICATOR+=1
if %_EXECUTE_SCRIPT%==1 (
set _SCRIPT_ARGS=%_SCRIPT_ARGS% %__ARG%
) else if "%__ARG:~-6%"==".scala" (
set _EXECUTE_SCRIPT=1
set "_TARGET_SCRIPT=%__ARG%"
) else (
set _RESIDUAL_ARGS=%_RESIDUAL_ARGS% %__ARG%
)
)
shift
goto args_loop
:args_done
goto :eof

@rem #########################################################################
@rem ## Cleanups

:end
exit /b %_EXITCODE%
endlocal
173 changes: 173 additions & 0 deletions dist/bin/scalac.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1,173 @@
@echo off
setlocal enabledelayedexpansion

@rem #########################################################################
@rem ## Environment setup

set _EXITCODE=0

set "_PROG_HOME=%~dp0"

call "%_PROG_HOME%\common.bat"
if not %_EXITCODE%==0 goto end

set _DEFAULT_JAVA_OPTS=-Xmx768m -Xms768m
@rem set _WITH_COMPILER=true

set _COMPILER_MAIN=dotty.tools.dotc.Main
set _DECOMPILER_MAIN=dotty.tools.dotc.decompiler.Main
set _REPL_MAIN=dotty.tools.repl.Main
set _SCRIPTING_MAIN=dotty.tools.scripting.Main

call :args %*

@rem #########################################################################
@rem ## Main

call :classpathArgs

set _SCRIPTING_STRING=
if "%_PROG_NAME%"=="%_SCRIPTING_MAIN%" (
if not defined _TARGET_SCRIPT (
echo Error: Missing Scala script file 1>&2
set _EXITCODE=1
goto end
)
set _SCRIPTING_STRING=-script %_TARGET_SCRIPT% %_SCRIPTING_ARGS%
)

if defined JAVA_OPTS ( set _JAVA_OPTS=%JAVA_OPTS%
) else ( set _JAVA_OPTS=%_DEFAULT_JAVA_OPTS%
)
call "%_JAVACMD%" %_JAVA_OPTS% %_JAVA_DEBUG% %_JAVA_ARGS% %_JVM_CP_ARGS% ^
-Dscala.usejavacp=true ^
%_PROG_NAME% %_SCALA_ARGS% %_RESIDUAL_ARGS% %_SCRIPTING_STRING%
if not %ERRORLEVEL%==0 (
set _EXITCODE=1
goto end
)
goto end

@rem #########################################################################
@rem ## Subroutines

:args
set _JAVA_DEBUG=
set _HELP=
set _VERBOSE=
set _QUIET=
set _COLORS=
set _PROG_NAME=%_COMPILER_MAIN%
set _SCALA_ARGS=
set _JAVA_ARGS=
set _RESIDUAL_ARGS=
set _SCRIPTING_ARGS=
set _TARGET_SCRIPT=

:args_loop
if "%~1"=="" goto args_done
set "__ARG=%~1"
if defined _TARGET_SCRIPT (
call :addScripting "%__ARG%"
) else if "%__ARG%"=="--" (
@rem for arg; do addResidual "$arg"; done; set -- ;;
) else if "%__ARG%"=="-h" (
set _HELP=true
call :addScala "-help"
) else if "%__ARG%"=="-help" (
set _HELP=true
call :addScala "-help"
) else if "%__ARG%"=="-v" (
set _VERBOSE=true
call :addScala "-verbose"
) else if "%__ARG%"=="-verbose" (
set _VERBOSE=true
call :addScala "-verbose"
) else if "%__ARG%"=="-debug" ( set "_JAVA_DEBUG=%_DEBUG_STR%"
) else if "%__ARG%"=="-q" ( set _QUIET=true
) else if "%__ARG%"=="-quiet" ( set _QUIET=true
@rem Optimize for short-running applications, see https://github.com/lampepfl/dotty/issues/222
) else if "%__ARG%"=="-Oshort" (
call :addJava "-XX:+TieredCompilation -XX:TieredStopAtLevel=1"
) else if "%__ARG%"=="-repl" ( set _PROG_NAME=%_REPL_MAIN%
) else if "%__ARG%"=="-script" (
set _PROG_NAME=%_SCRIPTING_MAIN%
if "%~2"=="" goto args_done
set "_TARGET_SCRIPT=%~2"
shift
) else if "%__ARG%"=="-compile" ( set _PROG_NAME=%_COMPILER_MAIN%
) else if "%__ARG%"=="-decompile" ( set _PROG_NAME=%_DECOMPILER_MAIN%
) else if "%__ARG%"=="-print-tasty" (
set _PROG_NAME=%_DECOMPILER_MAIN%
call :addScala "-print-tasty"
) else if "%__ARG%"=="-run" ( set _PROG_NAME=%_REPL_MAIN%
) else if "%__ARG%"=="-colors" ( set _COLORS=true
) else if "%__ARG%"=="-no-colors" ( set _COLORS=
) else if "%__ARG%"=="-with-compiler" ( set _JVM_CP_ARGS=%_PSEP%%_SCALA3_COMP%%_PSEP%%_TASTY_CORE%
@rem break out -D and -J options and add them to JAVA_OPTS as well
@rem so they reach the JVM in time to do some good. The -D options
@rem will be available as system properties.
) else if "%__ARG:~0,2%"=="-D" ( call :addJava "%__ARG%"
) else if "%__ARG:~0,2%"=="-J" ( call :addJava "%__ARG:~2%"
) else ( call :addResidual "%__ARG%"
)
shift
goto args_loop
:args_done
goto :eof

@rem output parameter: _SCALA_ARGS
:addScala
set _SCALA_ARGS=%_SCALA_ARGS% %~1
goto :eof

@rem output parameter: _JAVA_ARGS
:addJava
set _JAVA_ARGS=%_JAVA_ARGS% %~1
goto :eof

@rem output parameter: _RESIDUAL_ARGS
:addResidual
set _RESIDUAL_ARGS=%_RESIDUAL_ARGS% %~1
goto :eof

@rem output parameter: _SCRIPTING_ARGS
:addScripting
set _SCRIPTING_ARGS=%_SCRIPTING_ARGS% %~1
goto :eof

@rem output parameter: _JVM_CP_ARGS
:classpathArgs
@rem echo scala3-compiler: %_SCALA3_COMP%
@rem echo scala3-interface: %_SCALA3_INTF%
@rem echo scala3-library: %_SCALA3_LIB%
@rem echo tasty-core: %_TASTY_CORE%
@rem echo scala-asm: %_SCALA_ASM%
@rem echo scala-lib: %_SCALA_LIB%
@rem echo sbt-intface: %_SBT_INTF%

set __TOOLCHAIN=%_SCALA_LIB%%_PSEP%
set __TOOLCHAIN=%__TOOLCHAIN%%_SCALA3_LIB%%_PSEP%
set __TOOLCHAIN=%__TOOLCHAIN%%_SCALA_ASM%%_PSEP%
set __TOOLCHAIN=%__TOOLCHAIN%%_SBT_INTF%%_PSEP%
set __TOOLCHAIN=%__TOOLCHAIN%%_SCALA3_INTF%%_PSEP%
set __TOOLCHAIN=%__TOOLCHAIN%%_SCALA3_COMP%%_PSEP%
set __TOOLCHAIN=%__TOOLCHAIN%%_TASTY_CORE%%_PSEP%
set __TOOLCHAIN=%__TOOLCHAIN%%_SCALA3_STAGING%%_PSEP%
set __TOOLCHAIN=%__TOOLCHAIN%%_SCALA3_TASTY_INSPECTOR%%_PSEP%

@rem # jline
set __TOOLCHAIN=%__TOOLCHAIN%%_JLINE_READER%%_PSEP%
set __TOOLCHAIN=%__TOOLCHAIN%%_JLINE_TERMINAL%%_PSEP%
set __TOOLCHAIN=%__TOOLCHAIN%%_JLINE_TERMINAL_JNA%%_PSEP%
set __TOOLCHAIN=%__TOOLCHAIN%%_JNA%

set _JVM_CP_ARGS=-classpath "%__TOOLCHAIN%"
goto :eof

@rem #########################################################################
@rem ## Cleanups

:end
exit /b %_EXITCODE%
endlocal
Loading

0 comments on commit 9691698

Please sign in to comment.