This commit is contained in:
Бондарев Иван 2019-04-21 11:08:18 +02:00
parent f6da093505
commit 3557eab81f
5 changed files with 20 additions and 7 deletions

View file

@ -2758,10 +2758,21 @@ namespace PascalABCCompiler
{ {
string dir = Path.Combine(Path.GetDirectoryName(Unit.SyntaxTree.file_name), directive.Replace(Path.DirectorySeparatorChar + "*.pas", "")); string dir = Path.Combine(Path.GetDirectoryName(Unit.SyntaxTree.file_name), directive.Replace(Path.DirectorySeparatorChar + "*.pas", ""));
foreach (string file in Directory.EnumerateFiles(dir, "*.pas")) foreach (string file in Directory.EnumerateFiles(dir, "*.pas"))
{
if (!File.Exists(file))
throw new FileNotFound(file, cd.location);
files.Add(file); files.Add(file);
}
} }
else else
files.Add(Path.Combine(Path.GetDirectoryName(Unit.SyntaxTree.file_name), directive)); {
string file = Path.Combine(Path.GetDirectoryName(Unit.SyntaxTree.file_name), directive);
if (!File.Exists(file))
throw new FileNotFound(file, cd.location);
files.Add(file);
}
} }
@ -2770,8 +2781,7 @@ namespace PascalABCCompiler
List<SyntaxTree.unit_or_namespace> namespace_modules = new List<SyntaxTree.unit_or_namespace>(); List<SyntaxTree.unit_or_namespace> namespace_modules = new List<SyntaxTree.unit_or_namespace>();
foreach (string file in files) foreach (string file in files)
{ {
if (!File.Exists(file))
throw new FileNotFound(file);
SyntaxTree.compilation_unit tree = GetNamespaceSyntaxTree(file); SyntaxTree.compilation_unit tree = GetNamespaceSyntaxTree(file);
if (!(tree is SyntaxTree.unit_module)) if (!(tree is SyntaxTree.unit_module))
throw new NamespaceModuleExpected(tree.source_context); throw new NamespaceModuleExpected(tree.source_context);

View file

@ -3,11 +3,11 @@
namespace PascalABCCompiler namespace PascalABCCompiler
{ {
public class FileNotFound : TreeConverter.CompilationError public class FileNotFound : TreeConverter.CompilationErrorWithLocation
{ {
private string _file_name; private string _file_name;
public FileNotFound(string file_name) public FileNotFound(string file_name, TreeRealization.location loc):base(loc)
{ {
_file_name=file_name; _file_name=file_name;
} }
@ -22,8 +22,8 @@ namespace PascalABCCompiler
public override string ToString() public override string ToString()
{ {
return ("File: "+_file_name+" not found"); return string.Format(StringResources.Get("COMPILATIONERROR_FILE_{0}_NOT_FOUND"), _file_name);
} }
} }

View file

@ -14,6 +14,7 @@ RESOURCEFILE_{0}_NOT_FOUND=Resource file '{0}' not found
DUPLICATE_USES_UNIT{0}=Duplicate identifier '{0}' in uses section DUPLICATE_USES_UNIT{0}=Duplicate identifier '{0}' in uses section
MAINRESOURCE_NOT_ALLOWED=mainresource can not be used with the directives: product, version, company, trademark MAINRESOURCE_NOT_ALLOWED=mainresource can not be used with the directives: product, version, company, trademark
DUPLICATE_DIRECTIVE{0}=Duplicate directive {0} DUPLICATE_DIRECTIVE{0}=Duplicate directive {0}
FILE_{0}_NOT_FOUND=File '{0}' not found
%PREFIX%= %PREFIX%=
COMPILER_INTERNAL_ERROR_IN_UNIT_{0}_:{1}=Internal compiler error in module {0} :'{1}' COMPILER_INTERNAL_ERROR_IN_UNIT_{0}_:{1}=Internal compiler error in module {0} :'{1}'

View file

@ -14,6 +14,7 @@ RESOURCEFILE_{0}_NOT_FOUND=Файл '{0}' не найден
DUPLICATE_USES_UNIT{0}=Повторное подключение модуля {0} в секции uses DUPLICATE_USES_UNIT{0}=Повторное подключение модуля {0} в секции uses
MAINRESOURCE_NOT_ALLOWED=Недопустимо совместное использование директивы mainresource и директив product, version, company, trademark MAINRESOURCE_NOT_ALLOWED=Недопустимо совместное использование директивы mainresource и директив product, version, company, trademark
DUPLICATE_DIRECTIVE{0}=Повторное объявление директивы {0} DUPLICATE_DIRECTIVE{0}=Повторное объявление директивы {0}
FILE_{0}_NOT_FOUND=Файл '{0}' не найден
%PREFIX%= %PREFIX%=
COMPILER_INTERNAL_ERROR_IN_UNIT_{0}_:{1}=Внутренняя ошибка компилятора в модуле {0} :'{1}' COMPILER_INTERNAL_ERROR_IN_UNIT_{0}_:{1}=Внутренняя ошибка компилятора в модуле {0} :'{1}'

View file

@ -14,6 +14,7 @@ RESOURCEFILE_{0}_NOT_FOUND=Файл '{0}' не знайдено
DUPLICATE_USES_UNIT{0}=Повторне підключення модуля {0} в секції uses DUPLICATE_USES_UNIT{0}=Повторне підключення модуля {0} в секції uses
MAINRESOURCE_NOT_ALLOWED=Неприпустимо сумісне використання директиви mainresource і директив product, version, company, trademark MAINRESOURCE_NOT_ALLOWED=Неприпустимо сумісне використання директиви mainresource і директив product, version, company, trademark
DUPLICATE_DIRECTIVE{0}=Повторное объявление директивы {0} DUPLICATE_DIRECTIVE{0}=Повторное объявление директивы {0}
FILE_{0}_NOT_FOUND=Файл '{0}' не знайдено
%PREFIX%= %PREFIX%=
COMPILER_INTERNAL_ERROR_IN_UNIT_{0}_:{1}=Внутрішня помилка компілятора в модулі {0} :'{1}' COMPILER_INTERNAL_ERROR_IN_UNIT_{0}_:{1}=Внутрішня помилка компілятора в модулі {0} :'{1}'