1
1
mirror of https://github.com/kanaka/mal.git synced 2024-09-20 01:57:09 +03:00

haxe: Fix exception on literal empty list

Issue #190
This commit is contained in:
Dov Murik 2016-04-01 16:23:45 -04:00
parent 3339bb6a17
commit d3ec299408
8 changed files with 11 additions and 0 deletions

View File

@ -34,6 +34,7 @@ class Step3_env {
// apply
var alst = switch (ast) { case MalList(lst): lst; case _: []; }
if (alst.length == 0) { return ast; }
switch (alst[0]) {
case MalSymbol("def!"):

View File

@ -35,6 +35,7 @@ class Step4_if_fn_do {
// apply
var alst = _list(ast);
if (alst.length == 0) { return ast; }
switch (alst[0]) {
case MalSymbol("def!"):

View File

@ -36,6 +36,7 @@ class Step5_tco {
// apply
var alst = _list(ast);
if (alst.length == 0) { return ast; }
switch (alst[0]) {
case MalSymbol("def!"):

View File

@ -36,6 +36,7 @@ class Step6_file {
// apply
var alst = _list(ast);
if (alst.length == 0) { return ast; }
switch (alst[0]) {
case MalSymbol("def!"):

View File

@ -64,6 +64,7 @@ class Step7_quote {
// apply
var alst = _list(ast);
if (alst.length == 0) { return ast; }
switch (alst[0]) {
case MalSymbol("def!"):

View File

@ -43,6 +43,7 @@ class Step8_macros {
static function is_macro(ast:MalType, env:Env) {
return switch(ast) {
case MalList([]): false;
case MalList(a):
var a0 = a[0];
return symbol_Q(a0) &&
@ -90,6 +91,7 @@ class Step8_macros {
if (!list_Q(ast)) { return eval_ast(ast, env); }
var alst = _list(ast);
if (alst.length == 0) { return ast; }
switch (alst[0]) {
case MalSymbol("def!"):
return env.set(alst[1], EVAL(alst[2], env));

View File

@ -45,6 +45,7 @@ class Step9_try {
static function is_macro(ast:MalType, env:Env) {
return switch(ast) {
case MalList([]): false;
case MalList(a):
var a0 = a[0];
return symbol_Q(a0) &&
@ -92,6 +93,7 @@ class Step9_try {
if (!list_Q(ast)) { return eval_ast(ast, env); }
var alst = _list(ast);
if (alst.length == 0) { return ast; }
switch (alst[0]) {
case MalSymbol("def!"):
return env.set(alst[1], EVAL(alst[2], env));

View File

@ -45,6 +45,7 @@ class StepA_mal {
static function is_macro(ast:MalType, env:Env) {
return switch(ast) {
case MalList([]): false;
case MalList(a):
var a0 = a[0];
return symbol_Q(a0) &&
@ -92,6 +93,7 @@ class StepA_mal {
if (!list_Q(ast)) { return eval_ast(ast, env); }
var alst = _list(ast);
if (alst.length == 0) { return ast; }
switch (alst[0]) {
case MalSymbol("def!"):
return env.set(alst[1], EVAL(alst[2], env));