aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFábio de Souza Villaça Medeiros <fabiosvm@outlook.com>2023-01-20 07:29:07 -0300
committerGitHub <noreply@github.com>2023-01-20 11:29:07 +0100
commitd9cd9e0301c9ace9642668b48dd43a1eadc7440b (patch)
treee6692d04892d5b41ca459c16c85dd6f29e7bd8d1
parent41db591c542665652da2eafff515ca8eb5387153 (diff)
downloadcompiler-explorer-d9cd9e0301c9ace9642668b48dd43a1eadc7440b.tar.gz
compiler-explorer-d9cd9e0301c9ace9642668b48dd43a1eadc7440b.zip
Ignore trim filter for Hook (#4604)gh-5901
-rw-r--r--etc/config/hook.amazon.properties1
-rw-r--r--etc/config/hook.defaults.properties1
-rw-r--r--lib/compilers/hook.ts31
-rw-r--r--test/compilers/hook-tests.js22
4 files changed, 34 insertions, 21 deletions
diff --git a/etc/config/hook.amazon.properties b/etc/config/hook.amazon.properties
index e53632711..fcb0acbe1 100644
--- a/etc/config/hook.amazon.properties
+++ b/etc/config/hook.amazon.properties
@@ -14,6 +14,7 @@ group.hook.isSemVer=true
group.hook.baseName=Hook
group.hook.licenseName=MIT
group.hook.licenseLink=https://github.com/fabiosvm/hook-lang/blob/main/LICENSE
+group.hook.instructionSet=hook
compiler.hook010.exe=/opt/compiler-explorer/hook/hook-0.1.0/bin/hook
compiler.hook010.semver=0.1.0
diff --git a/etc/config/hook.defaults.properties b/etc/config/hook.defaults.properties
index 12d5189df..2e8e04e13 100644
--- a/etc/config/hook.defaults.properties
+++ b/etc/config/hook.defaults.properties
@@ -14,6 +14,7 @@ group.hook.isSemVer=true
group.hook.baseName=Hook
group.hook.licenseName=MIT
group.hook.licenseLink=https://github.com/fabiosvm/hook-lang/blob/main/LICENSE
+group.hook.instructionSet=hook
compiler.hook010def.exe=hook
compiler.hook010def.semver=0.1.0
diff --git a/lib/compilers/hook.ts b/lib/compilers/hook.ts
index 3e6c08773..26ebc42fe 100644
--- a/lib/compilers/hook.ts
+++ b/lib/compilers/hook.ts
@@ -24,7 +24,6 @@
import path from 'path';
-import {ParsedAsmResultLine} from '../../types/asmresult/asmresult.interfaces';
import {CompilationResult, ExecutionOptions} from '../../types/compilation/compilation.interfaces';
import {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces';
import {BaseCompiler} from '../base-compiler';
@@ -48,38 +47,44 @@ export class HookCompiler extends BaseCompiler {
inputFilename: string,
execOptions: ExecutionOptions,
): Promise<CompilationResult> {
+ const compilerPath = path.dirname(compiler);
+ execOptions.env.HOOK_HOME = path.join(compilerPath, '..');
const dirPath = path.dirname(inputFilename);
const outputFilename = this.getOutputFilename(dirPath);
options.push(outputFilename);
return super.runCompiler(compiler, options, inputFilename, execOptions);
}
- override processAsm(result) {
+ override processAsm(result, filters, options) {
+ // Ignoring `trim` filter because it is not supported by Hook.
+ filters.trim = false;
+ const _result = super.processAsm(result, filters, options);
const commentRegex = /^\s*;(.*)/;
const instructionRegex = /^\s{2}(\d+)(.*)/;
- const lines = result.asm.split('\n');
- const asm: ParsedAsmResultLine[] = [];
+ const asm = _result.asm;
let lastLineNo: number | undefined;
- for (const line of lines) {
- if (commentRegex.test(line)) {
- asm.push({text: line, source: {line: undefined, file: null}});
+ for (const item of asm) {
+ const text = item.text;
+ if (commentRegex.test(text)) {
+ item.source = {line: undefined, file: null};
lastLineNo = undefined;
continue;
}
- const match = line.match(instructionRegex);
+ const match = text.match(instructionRegex);
if (match) {
const lineNo = parseInt(match[1]);
- asm.push({text: line, source: {line: lineNo, file: null}});
+ item.source = {line: lineNo, file: null};
lastLineNo = lineNo;
continue;
}
- if (line) {
- asm.push({text: line, source: {line: lastLineNo, file: null}});
+ if (text) {
+ item.source = {line: lastLineNo, file: null};
continue;
}
- asm.push({text: line, source: {line: undefined, file: null}});
+ item.source = {line: undefined, file: null};
lastLineNo = undefined;
}
- return {asm: asm};
+ _result.asm = asm;
+ return _result;
}
}
diff --git a/test/compilers/hook-tests.js b/test/compilers/hook-tests.js
index 550c1b962..7bda70c78 100644
--- a/test/compilers/hook-tests.js
+++ b/test/compilers/hook-tests.js
@@ -59,6 +59,7 @@ describe('Hook compiler', () => {
const expected = {
asm: [
{
+ labels: [],
source: {
file: null,
line: undefined,
@@ -66,6 +67,7 @@ describe('Hook compiler', () => {
text: '; main in /app/example.hk at 0x56554a556550',
},
{
+ labels: [],
source: {
file: null,
line: undefined,
@@ -73,6 +75,7 @@ describe('Hook compiler', () => {
text: '; 0 parameter(s), 0 non-local(s), 0 constant(s), 0 function(s)',
},
{
+ labels: [],
source: {
file: null,
line: 1,
@@ -80,6 +83,7 @@ describe('Hook compiler', () => {
text: ' 1 0 Int 2',
},
{
+ labels: [],
source: {
file: null,
line: 1,
@@ -87,6 +91,7 @@ describe('Hook compiler', () => {
text: ' 3 Int 2',
},
{
+ labels: [],
source: {
file: null,
line: 1,
@@ -94,6 +99,7 @@ describe('Hook compiler', () => {
text: ' 6 Multiply',
},
{
+ labels: [],
source: {
file: null,
line: 2,
@@ -101,6 +107,7 @@ describe('Hook compiler', () => {
text: ' 2 7 Load 2',
},
{
+ labels: [],
source: {
file: null,
line: 2,
@@ -108,6 +115,7 @@ describe('Hook compiler', () => {
text: ' 9 Return',
},
{
+ labels: [],
source: {
file: null,
line: 2,
@@ -115,22 +123,20 @@ describe('Hook compiler', () => {
text: ' 10 ReturnNil',
},
{
+ labels: [],
source: {
file: null,
line: undefined,
},
text: '; 6 instruction(s)',
},
- {
- source: {
- file: null,
- line: undefined,
- },
- text: '',
- },
],
+ filteredCount: 0,
+ labelDefinitions: {},
};
- const result = hook.processAsm({asm: asm});
+ const filters = {trim: false};
+ const result = hook.processAsm({asm: asm}, filters, null);
+ delete result.parsingTime;
result.should.deep.equal(expected);
});
});