diff options
| author | hallgren <hallgren@chalmers.se> | 2012-02-16 17:05:12 +0000 |
|---|---|---|
| committer | hallgren <hallgren@chalmers.se> | 2012-02-16 17:05:12 +0000 |
| commit | f4466495506b32880c169f3326eacccf771527e3 (patch) | |
| tree | ca3486fa987204ffc29b946f6ac1995b0f48f03a /src | |
| parent | d98f63af515b873c84a5ade3d692bca61dd12896 (diff) | |
gfse: bug fix
...in the function that computes the transitive closure of the grammar
inheritance relation.
Diffstat (limited to 'src')
| -rw-r--r-- | src/www/gfse/editor.js | 6 |
1 files changed, 5 insertions, 1 deletions
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<local.count;i++) { |
