From f4466495506b32880c169f3326eacccf771527e3 Mon Sep 17 00:00:00 2001 From: hallgren Date: Thu, 16 Feb 2012 17:05:12 +0000 Subject: [PATCH] gfse: bug fix ...in the function that computes the transitive closure of the grammar inheritance relation. --- src/www/gfse/editor.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/www/gfse/editor.js b/src/www/gfse/editor.js index 577b4857b..940c3d54b 100644 --- a/src/www/gfse/editor.js +++ b/src/www/gfse/editor.js @@ -1015,6 +1015,7 @@ function defined_funs(g) { return all_defined_funs(g,inherited_gramamrs(g)) } function inherited_cats(g) {return all_inherited_cats(inherited_grammars(g),{})} function inherited_funs(g) {return all_inherited_funs(inherited_grammars(g),{})} +// inherited_grammars :: Grammar -> [Grammar] function inherited_grammars(g) { // Load the available grammars once var grammar_byname=cached_grammar_byname(); @@ -1026,18 +1027,21 @@ function inherited_grammars(g) { visited[g.basename]=true; var igs=(g.extends || []).map(grammar_byname) var igss=igs.map(ihgs) - for(var i in igss) igs.concat(igss[i]); + for(var i in igss) igs=igs.concat(igss[i]); return igs; } } return ihgs(g) } +// cached_grammar__byname :: () -> (ModId->Grammar) function cached_grammar_byname() { var gix=cached_grammar_array_byname() function grammar_byname(name) { return gix[name]; } return grammar_byname; } + +// cached_grammar_array_byname :: () -> {ModId=>Grammar} function cached_grammar_array_byname() { var gix={}; for(var i=0;i