aboutsummaryrefslogtreecommitdiff
path: root/lib/compilers/pascal.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/compilers/pascal.js')
-rw-r--r--lib/compilers/pascal.js17
1 files changed, 14 insertions, 3 deletions
diff --git a/lib/compilers/pascal.js b/lib/compilers/pascal.js
index 4860674c6..8be044285 100644
--- a/lib/compilers/pascal.js
+++ b/lib/compilers/pascal.js
@@ -32,6 +32,7 @@ var Compile = require('../base-compiler'),
function compileFPC(info, env) {
var demangler = new PascalDemangler();
var compiler = new Compile(info, env);
+ compiler.compileFilename = "output.pas";
compiler.supportsOptOutput = false;
var originalExecBinary = compiler.execBinary;
@@ -63,10 +64,16 @@ function compileFPC(info, env) {
return options;
};
+ compiler.getOutputFilename = function (dirPath, outputFilebase) {
+ return path.join(dirPath, path.basename(this.compileFilename, this.langInfo.extensions[0]) + ".s");
+ };
+
var saveDummyProjectFile = function (filename) {
+ const unitName = path.basename(compiler.compileFilename, compiler.langInfo.extensions[0]);
+
fs.writeFileSync(filename,
"program prog; " +
- "uses output in 'output.pas'; " +
+ "uses " + unitName + " in '" + compiler.compileFilename + "'; " +
"begin " +
"end.", function() {});
};
@@ -100,7 +107,7 @@ function compileFPC(info, env) {
if (!isNaN(valueInBrackets)) {
return " .loc 1 " + valueInBrackets + " 0";
- } else if (valueInBrackets.includes("output.pas")) {
+ } else if (valueInBrackets.includes(compiler.compileFilename)) {
return " .file 1 \"<stdin>\"";
} else {
return false;
@@ -181,7 +188,11 @@ function compileFPC(info, env) {
originalExecBinary(executable, result, maxSize);
};
- return compiler.initialise();
+ if (info.unitTestMode) {
+ compiler.initialise();
+ return compiler;
+ } else
+ return compiler.initialise();
}
module.exports = compileFPC;