summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorhallgren <hallgren@chalmers.se>2012-02-16 17:05:12 +0000
committerhallgren <hallgren@chalmers.se>2012-02-16 17:05:12 +0000
commitf4466495506b32880c169f3326eacccf771527e3 (patch)
treeca3486fa987204ffc29b946f6ac1995b0f48f03a /src
parentd98f63af515b873c84a5ade3d692bca61dd12896 (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.js6
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++) {