Open vmarkovsky opened 11 months ago
Добрый день. Кажется проблему с квадратными скобками уже регали. Ждёт своего решения в 1c-syntax/utils :(
Возможно, стоит заменить устаревший класс File в DocumentContext.java
protected void rebuild() {
try {
var newContent = FileUtils.readFileToString(new File(uri), StandardCharsets.UTF_8);
rebuild(newContent, 0);
} catch (IOException e) {
LOGGER.error("Can't rebuild content from uri", e);
}
}
на обновленный Path (NIO2)
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.Files;
protected void rebuild() {
try {
Path filePath = Paths.get(uri);
var newContent = FileUtils.readFileToString(filePath, StandardCharsets.UTF_8);
rebuild(newContent, 0);
} catch (IOException e) {
LOGGER.error("Can't rebuild content from uri", e);
}
}
Там дело не в File, а в том как преобразуется входящий URI
Добрый день. Кажется проблему с квадратными скобками уже регали. Ждёт своего решения в 1c-syntax/utils :(
не нашел...
Там дело не в File, а в том как преобразуется входящий URI
Как я понимаю, метод Paths.get() работает с учетом экранирования символов [ и ].
Да, только ему уже приходит uri, который невалидно обработал []
Да, только ему уже приходит uri, который невалидно обработал []
Обработка [] похоже есть в утилсах и этот пример не падает из vsc. Падает из аналайз.
Версия v0.22.0
Описание ошибки диагностики Если в пути или имени файла есть символ [ или ] (квадратная скобка, квадратные скобки, square brackets), возникает ошибка Can't rebuild content from uri (java.nio.file.NoSuchFileException)
Пример кода От кода не зависит, зависит только от имен папок/файлов.
Скриншоты
Дополнительная информация путь к файлу: .\erf\report - [register details]\Ext\ObjectModule.bsl
java.nio.file.NoSuchFileException: .\erf\report - ?register details?\Ext\ObjectModule.bsl at java.base/sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:85) at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:103) at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:108) at java.base/sun.nio.fs.WindowsFileSystemProvider.newByteChannel(WindowsFileSystemProvider.java:236) 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) at org.apache.commons.io.FileUtils.lambda$readFileToString$12(FileUtils.java:2616) at org.apache.commons.io.IOUtils.toString(IOUtils.java:3177) at org.apache.commons.io.IOUtils.toString(IOUtils.java:3152) at org.apache.commons.io.FileUtils.readFileToString(FileUtils.java:2616) at com.github._1c_syntax.bsl.languageserver.context.DocumentContext.rebuild(DocumentContext.java:304) at com.github._1c_syntax.bsl.languageserver.context.ServerContext.rebuildDocument(ServerContext.java:220) at com.github._1c_syntax.bsl.languageserver.context.ServerContext.lambda$populateContext$0(ServerContext.java:117) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183) at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625) at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) at java.base/java.util.stream.ForEachOps$ForEachTask.compute(ForEachOps.java:290) at java.base/java.util.concurrent.CountedCompleter.exec(CountedCompleter.java:754) at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373) at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182) at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655) at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622) at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165)