diff --git a/ChangeLog b/ChangeLog index 9401f8f..9053da1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +Sun Dec 7 17:09:17 2008 Minero Aoki + + * net/loveruby/cflat/ast/ToplevelScope.java: use SemanticException + instead of SemanticError for duplicated declarations/definitions. + +Sun Dec 7 17:08:26 2008 Minero Aoki + + * test: test declaration override (error path). + Sun Dec 7 16:55:56 2008 Minero Aoki * test: test declaration override. diff --git a/net/loveruby/cflat/ast/ToplevelScope.java b/net/loveruby/cflat/ast/ToplevelScope.java index 315120f..2c3e970 100644 --- a/net/loveruby/cflat/ast/ToplevelScope.java +++ b/net/loveruby/cflat/ast/ToplevelScope.java @@ -28,21 +28,25 @@ public class ToplevelScope extends Scope { /** Declare variable or function globally. */ // #@@range/declareEntity{ - public void declareEntity(Entity ent) { - if (entities.containsKey(ent.name())) { - throw new Error("duplicated declaration: " + ent.name()); + public void declareEntity(Entity entity) throws SemanticException { + Entity e = entities.get(entity.name()); + if (e != null) { + throw new SemanticException("duplicated declaration: " + + entity.name() + ": " + + e.location() + " and " + entity.location()); } - entities.put(ent.name(), ent); + entities.put(entity.name(), entity); } // #@@} /** Define variable or function globally. */ // #@@range/defineEntity{ - public void defineEntity(Entity entity) { - Entity ent = entities.get(entity.name()); - if (ent != null && ent.isDefined()) { - throw new Error("duplicated definition: " + entity.name() + ": " + - ent.location() + " and " + entity.location()); + public void defineEntity(Entity entity) throws SemanticException { + Entity e = entities.get(entity.name()); + if (e != null && e.isDefined()) { + throw new SemanticException("duplicated definition: " + + entity.name() + ": " + + e.location() + " and " + entity.location()); } entities.put(entity.name(), entity); }