Closed
Description
Compiler version
3.0.0 and 3.1.0
Minimized code
here and here (and I believe later is what occurs in this Ammonite issue) assumes JVM always throw NoSuchFileException
when path is not exist, but that's not the case under linux if 1. path start with directory and 2. the directory name exists in filesystem as a file
the code assumed:
$ file test
test: cannot open `test' (No such file or directory)
scala> java.nio.file.Files.newInputStream(java.nio.file.Paths.get("test/test.scala"))
java.nio.file.NoSuchFileException: test/test.scala
at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:92)
at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:106)
at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111)
at java.base/sun.nio.fs.UnixFileSystemProvider.newByteChannel(UnixFileSystemProvider.java:219)
at java.base/java.nio.file.Files.newByteChannel(Files.java:380)
at java.base/java.nio.file.Files.newByteChannel(Files.java:432)
at java.base/java.nio.file.spi.FileSystemProvider.newInputStream(FileSystemProvider.java:422)
at java.base/java.nio.file.Files.newInputStream(Files.java:160)
... 28 elided
or
$ mkdir test
$ ./scala
scala> java.nio.file.Files.newInputStream(java.nio.file.Paths.get("test/test.scala"))
java.nio.file.NoSuchFileException: test/test.scala
at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:92)
at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:106)
at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111)
at java.base/sun.nio.fs.UnixFileSystemProvider.newByteChannel(UnixFileSystemProvider.java:219)
at java.base/java.nio.file.Files.newByteChannel(Files.java:380)
at java.base/java.nio.file.Files.newByteChannel(Files.java:432)
at java.base/java.nio.file.spi.FileSystemProvider.newInputStream(FileSystemProvider.java:422)
at java.base/java.nio.file.Files.newInputStream(Files.java:160)
... 28 elided
and the uncatched case:
$ rmdir test
$ touch test
scala> java.nio.file.Files.newInputStream(java.nio.file.Paths.get("test/test.scala"))
java.nio.file.FileSystemException: test/test.scala: Not a directory
at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:100)
at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:106)
at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111)
at java.base/sun.nio.fs.UnixFileSystemProvider.newByteChannel(UnixFileSystemProvider.java:219)
at java.base/java.nio.file.Files.newByteChannel(Files.java:380)
at java.base/java.nio.file.Files.newByteChannel(Files.java:432)
at java.base/java.nio.file.spi.FileSystemProvider.newInputStream(FileSystemProvider.java:422)
at java.base/java.nio.file.Files.newInputStream(Files.java:160)
... 28 elided