Skip to content

Commit

Permalink
fixes #22 ; export by function reference
Browse files Browse the repository at this point in the history
  • Loading branch information
drom committed Jun 4, 2017
1 parent 1c6725e commit 3f8c151
Show file tree
Hide file tree
Showing 6 changed files with 140 additions and 43 deletions.
42 changes: 29 additions & 13 deletions bin/wast2ast.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ var fs = require('fs'),
jsof = require('jsof'),
parser = require('../');

function runner (name, report) {
function runner (name, dst, report) {
return function (err, data) {
var result;
if (err) { throw err; }
Expand All @@ -31,23 +31,39 @@ function runner (name, report) {
};
}

var src = path.resolve(__dirname, '../testsuite/');
var dst = path.resolve(__dirname, '../results/');

var wastFileNames = fs.readdirSync(src);

var report = { pass: 0, fail: 0 };

wastFileNames.forEach(function (wastFileName) {
var matchArr = wastFileName.match('^(.*).wast$');
// var matchFail = wastFileName.match('^(.*).fail.wast$');
if (matchArr) { // } && !matchFail) {
[
{ src: '../testsuite/', dst: '../results/' },
{ src: '../testsuite-extra/', dst: '../results-extra/' }
]
.map(function (job) {
return {
src: path.resolve(__dirname, job.src),
dst: path.resolve(__dirname, job.dst)
};
})
.map(function (job) {
return {
src: job.src,
dst: job.dst,
files: (
fs.readdirSync(job.src)
.filter(function (fileName) {
return fileName.match('^(.*).wast$');
})
)
};
})
.forEach(function (job) {
job.files.forEach(function (wastFileName) {
var matchArr = wastFileName.match('^(.*).wast$');
fs.readFile(
path.resolve(src, wastFileName),
path.resolve(job.src, wastFileName),
'utf8',
runner(matchArr[1], report)
runner(matchArr[1], job.dst, report)
);
}
});
});

process.on('exit', function () {
Expand Down
71 changes: 71 additions & 0 deletions results-extra/wast-parser-22.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
{
kind: 'script',
body: [{
kind: 'module',
body: [
{
kind: 'export',
name: {
kind: 'literal',
value: 'add'
},
id: {
kind: 'identifier',
name: 'add'
}
},
{
kind: 'func',
id: {
kind: 'identifier',
name: 'add'
},
expo: null,
imp: null,
type: null,
params: [
{
kind: 'param',
items: [{
kind: 'item',
name: 'x',
type: 'f64'
}]
},
{
kind: 'param',
items: [{
kind: 'item',
name: 'y',
type: 'f64'
}]
}
],
result: {
kind: 'result',
type: 'f64'
},
local: [],
body: [{
kind: 'binop',
type: 'f64',
operator: 'add',
left: {
kind: 'get_local',
id: {
kind: 'identifier',
name: 'x'
}
},
right: {
kind: 'get_local',
id: {
kind: 'identifier',
name: 'y'
}
}
}]
}
]
}]
}
13 changes: 0 additions & 13 deletions test/factorial.wast

This file was deleted.

46 changes: 30 additions & 16 deletions test/test.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,20 +6,36 @@ var fs = require('fs'),
jsof = require('jsof'),
parser = require('../');

var src = path.resolve(__dirname, '../testsuite/');
var dst = path.resolve(__dirname, '../results/');

var astFileNames = fs.readdirSync(dst);

describe('parse', function () {
astFileNames.forEach(function (astFileName) {
var name;
var matchArr = astFileName.match('^(.*).js$');
if (matchArr) {
name = matchArr[1];
[
{ src: '../testsuite/', dst: '../results/' },
{ src: '../testsuite-extra/', dst: '../results-extra/' }
]
.map(function (job) {
return {
src: path.resolve(__dirname, job.src),
dst: path.resolve(__dirname, job.dst)
};
})
.map(function (job) {
return {
src: job.src,
dst: job.dst,
files: (
fs.readdirSync(job.dst)
.filter(function (fileName) {
return fileName.match('^(.*).js$');
})
)
};
})
.forEach(function (job) {
describe(job.src, function () {
job.files.forEach(function (astFileName) {
var matchArr = astFileName.match('^(.*).js$');
var name = matchArr[1];
it(name, function (done) {
fs.readFile(
path.resolve(src, name + '.wast'),
path.resolve(job.src, name + '.wast'),
'utf8',
function (err, wastData) {
if (err) { throw err; }
Expand All @@ -33,19 +49,17 @@ describe('parse', function () {
}

fs.readFile(
path.resolve(dst, name + '.js'),
path.resolve(job.dst, name + '.js'),
'utf8',
function (err2, astData) {
if (err2) { throw err2; }
expect(jsof.s(result) + '\n').to.equal(astData);
done();
}
);
// expect(jsof.s(result)).to.equal(jsof.s(require('../results/' + name + '.js')));
// done();
}
);
});
}
});
});
});
9 changes: 9 additions & 0 deletions testsuite-extra/wast-parser-22.wast
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
(module
(export "add" $add)
(func $add (param $x f64) (param $y f64) (result f64)
(f64.add
(get_local $x)
(get_local $y)
)
)
)
2 changes: 1 addition & 1 deletion wast.pegjs
Original file line number Diff line number Diff line change
Expand Up @@ -504,7 +504,7 @@ import = kind:"import" id:( __ var )? __ modName:literal __ funcName:literal typ
};
}

export = kind:"export" __ ["] name:( "\\" "\"" / !["] . )* ["] __ id:( cmd / "memory" ) {
export = kind:"export" __ ["] name:( "\\" "\"" / !["] . )* ["] __ id:( var / cmd / "memory" ) {
return {
kind: kind,
name: {
Expand Down

0 comments on commit 3f8c151

Please sign in to comment.