Update of /cvsroot/gobo-eiffel/gobo/library/tools/eiffel/ast/feature
In directory usw-pr-cvs1:/tmp/cvs-serv21501/library/tools/eiffel/ast/feature
Modified Files:
et_attribute.e et_constant_attribute.e et_deferred_function.e
et_deferred_procedure.e et_deferred_routine.e et_do_function.e
et_do_procedure.e et_external_function.e
et_external_procedure.e et_external_routine.e et_feature.e
et_formal_argument.e et_formal_arguments.e et_function.e
et_internal_function.e et_internal_procedure.e
et_internal_routine.e et_local_variable.e et_once_function.e
et_once_procedure.e et_procedure.e et_query.e et_routine.e
et_unique_attribute.e
Added Files:
et_external_alias.e et_external_language.e et_feature_item.e
et_feature_semicolon.e
Log Message:
Continued decorating the abstract syntax tree.
--- NEW FILE: et_external_alias.e ---
indexing
description:
"Eiffel alias clauses in external routines"
library: "Gobo Eiffel Tools Library"
copyright: "Copyright (c) 2002, Eric Bezault and others"
license: "Eiffel Forum License v1 (see forum.txt)"
date: "$Date: 2002/09/22 10:53:38 $"
revision: "$Revision: 1.1 $"
deferred class ET_EXTERNAL_ALIAS
inherit
ET_AST_NODE
feature -- Access
manifest_string: ET_MANIFEST_STRING is
-- Manifest string
deferred
ensure
manifest_string_not_void: Result /= Void
end
end
--- NEW FILE: et_external_language.e ---
indexing
description:
"Eiffel language clauses in external routines"
library: "Gobo Eiffel Tools Library"
copyright: "Copyright (c) 2002, Eric Bezault and others"
license: "Eiffel Forum License v1 (see forum.txt)"
date: "$Date: 2002/09/22 10:53:38 $"
revision: "$Revision: 1.1 $"
deferred class ET_EXTERNAL_LANGUAGE
inherit
ET_AST_NODE
feature -- Access
manifest_string: ET_MANIFEST_STRING is
-- Manifest string
deferred
ensure
manifest_string_not_void: Result /= Void
end
end
--- NEW FILE: et_feature_item.e ---
indexing
description:
"Eiffel features in semicolon-separated list of features"
library: "Gobo Eiffel Tools Library"
copyright: "Copyright (c) 2002, Eric Bezault and others"
license: "Eiffel Forum License v1 (see forum.txt)"
date: "$Date: 2002/09/22 10:53:38 $"
revision: "$Revision: 1.1 $"
deferred class ET_FEATURE_ITEM
inherit
ET_AST_NODE
feature -- Access
feature_item: ET_FEATURE is
-- Feature in semicolon-separated list
deferred
ensure
feature_item_not_void: Result /= Void
end
end
--- NEW FILE: et_feature_semicolon.e ---
indexing
description:
"Eiffel features followed by a semicolon"
library: "Gobo Eiffel Tools Library"
copyright: "Copyright (c) 2002, Eric Bezault and others"
license: "Eiffel Forum License v1 (see forum.txt)"
date: "$Date: 2002/09/22 10:53:38 $"
revision: "$Revision: 1.1 $"
class ET_FEATURE_SEMICOLON
inherit
ET_FEATURE_ITEM
creation
make
feature {NONE} -- Initialization
make (a_feature: like feature_item; a_semicolon: like semicolon) is
-- Create a new feature-semicolon.
require
a_feature_not_void: a_feature /= Void
a_semicolon_not_void: a_semicolon /= Void
do
feature_item := a_feature
semicolon := a_semicolon
ensure
feature_item_set: feature_item = a_feature
semicolon_set: semicolon = a_semicolon
end
feature -- Access
feature_item: ET_FEATURE
-- Feature in semicolon-separated list
semicolon: ET_SYMBOL
-- Semicolon separator
position: ET_POSITION is
-- Position of first character of
-- current node in source code
do
Result := feature_item.position
end
break: ET_BREAK is
-- Break which appears just after current node
do
Result := semicolon.break
end
invariant
semicolon_not_void: semicolon /= Void
end
Index: et_attribute.e
===================================================================
RCS file: /cvsroot/gobo-eiffel/gobo/library/tools/eiffel/ast/feature/et_attribute.e,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -r1.4 -r1.5
*** et_attribute.e 6 Apr 2002 16:29:28 -0000 1.4
--- et_attribute.e 22 Sep 2002 10:53:38 -0000 1.5
***************
*** 27,31 ****
feature {NONE} -- Initialization
! make (a_name: like name; a_type: like type; a_clients: like clients;
a_class: like current_class; an_id: INTEGER) is
-- Create a new attribute.
--- 27,31 ----
feature {NONE} -- Initialization
! make (a_name: like name_item; a_type: like declared_type; a_clients: like clients;
a_class: like current_class; an_id: INTEGER) is
-- Create a new attribute.
***************
*** 37,43 ****
an_id_positive: an_id > 0
do
! name := a_name
id := an_id
! type := a_type
clients := a_clients
version := an_id
--- 37,43 ----
an_id_positive: an_id > 0
do
! name_item := a_name
id := an_id
! declared_type := a_type
clients := a_clients
version := an_id
***************
*** 46,51 ****
first_seed := an_id
ensure
! name_set: name = a_name
! type_set: type = a_type
clients_set: clients = a_clients
version_set: version = an_id
--- 46,51 ----
first_seed := an_id
ensure
! name_item_set: name_item = a_name
! declared_type_set: declared_type = a_type
clients_set: clients = a_clients
version_set: version = an_id
***************
*** 65,74 ****
-- the form 'prefix ...'?
feature -- Duplication
! synonym (a_name: like name): like Current is
-- Synonym feature
do
! Result := universe.new_attribute (a_name, type, clients, current_class)
end
--- 65,83 ----
-- the form 'prefix ...'?
+ feature -- Access
+
+ break: ET_BREAK is
+ -- Break which appears just after current node
+ do
+ -- TODO:
+ end
+
feature -- Duplication
! new_synonym (a_name: like name_item): like Current is
-- Synonym feature
do
! Result := universe.new_attribute (a_name, declared_type, clients, current_class)
! Result.set_synonym (Current)
end
***************
*** 78,84 ****
-- Renamed version of current feature
do
! Result := universe.new_attribute (a_name, type, clients, current_class)
Result.set_implementation_class (implementation_class)
Result.set_version (version)
if seeds /= Void then
Result.set_seeds (seeds)
--- 87,94 ----
-- Renamed version of current feature
do
! Result := universe.new_attribute (a_name, declared_type, clients, current_class)
Result.set_implementation_class (implementation_class)
Result.set_version (version)
+ Result.set_frozen_keyword (frozen_keyword)
if seeds /= Void then
Result.set_seeds (seeds)
Index: et_constant_attribute.e
===================================================================
RCS file: /cvsroot/gobo-eiffel/gobo/library/tools/eiffel/ast/feature/et_constant_attribute.e,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -r1.5 -r1.6
*** et_constant_attribute.e 6 Apr 2002 16:29:28 -0000 1.5
--- et_constant_attribute.e 22 Sep 2002 10:53:38 -0000 1.6
***************
*** 21,24 ****
--- 21,26 ----
end
+ ET_SHARED_TOKEN_CONSTANTS
+
creation
***************
*** 27,31 ****
feature {NONE} -- Initialization
! make (a_name: like name; a_type: like type; a_constant: like constant;
a_clients: like clients; a_class: like current_class; an_id: INTEGER) is
-- Create a new constant attribute.
--- 29,33 ----
feature {NONE} -- Initialization
! make (a_name: like name_item; a_type: like declared_type; a_constant: like constant;
a_clients: like clients; a_class: like current_class; an_id: INTEGER) is
-- Create a new constant attribute.
***************
*** 38,44 ****
an_id_positive: an_id > 0
do
! name := a_name
id := an_id
! type := a_type
constant := a_constant
clients := a_clients
--- 40,47 ----
an_id_positive: an_id > 0
do
! name_item := a_name
id := an_id
! declared_type := a_type
! is_keyword := tokens.is_keyword
constant := a_constant
clients := a_clients
***************
*** 48,53 ****
first_seed := an_id
ensure
! name_set: name = a_name
! type_set: type = a_type
constant_set: constant = a_constant
clients_set: clients = a_clients
--- 51,56 ----
first_seed := an_id
ensure
! name_item_set: name_item = a_name
! declared_type_set: declared_type = a_type
constant_set: constant = a_constant
clients_set: clients = a_clients
***************
*** 61,67 ****
--- 64,79 ----
feature -- Access
+ is_keyword: ET_TOKEN
+ -- 'is' keyword
+
constant: ET_CONSTANT
-- Constant value
+ break: ET_BREAK is
+ -- Break which appears just after current node
+ do
+ Result := constant.break
+ end
+
feature -- Status report
***************
*** 73,83 ****
-- the form 'prefix ...'?
feature -- Duplication
! synonym (a_name: like name): like Current is
-- Synonym feature
do
Result := universe.new_constant_attribute (a_name,
! type, constant, clients, current_class)
end
--- 85,109 ----
-- the form 'prefix ...'?
+ feature -- Setting
+
+ set_is_keyword (an_is: like is_keyword) is
+ -- Set `is_keyword' to `an_is'.
+ require
+ an_is_not_void: an_is /= Void
+ do
+ is_keyword := an_is
+ ensure
+ is_keyword_set: is_keyword = an_is
+ end
+
feature -- Duplication
! new_synonym (a_name: like name_item): like Current is
-- Synonym feature
do
Result := universe.new_constant_attribute (a_name,
! declared_type, constant, clients, current_class)
! Result.set_is_keyword (is_keyword)
! Result.set_synonym (Current)
end
***************
*** 88,94 ****
do
Result := universe.new_constant_attribute (a_name,
! type, constant, clients, current_class)
Result.set_implementation_class (implementation_class)
Result.set_version (version)
if seeds /= Void then
Result.set_seeds (seeds)
--- 114,122 ----
do
Result := universe.new_constant_attribute (a_name,
! declared_type, constant, clients, current_class)
! Result.set_is_keyword (is_keyword)
Result.set_implementation_class (implementation_class)
Result.set_version (version)
+ Result.set_frozen_keyword (frozen_keyword)
if seeds /= Void then
Result.set_seeds (seeds)
***************
*** 105,108 ****
--- 133,137 ----
invariant
+ is_keyword_not_void: is_keyword /= Void
constant_not_void: constant /= Void
Index: et_deferred_function.e
===================================================================
RCS file: /cvsroot/gobo-eiffel/gobo/library/tools/eiffel/ast/feature/et_deferred_function.e,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -r1.4 -r1.5
*** et_deferred_function.e 6 Apr 2002 16:29:28 -0000 1.4
--- et_deferred_function.e 22 Sep 2002 10:53:38 -0000 1.5
***************
*** 31,35 ****
feature {NONE} -- Initialization
! make (a_name: like name; args: like arguments; a_type: like type;
an_obsolete: like obsolete_message; a_preconditions: like preconditions;
a_postconditions: like postconditions; a_clients: like clients;
--- 31,35 ----
feature {NONE} -- Initialization
! make (a_name: like name_item; args: like arguments; a_type: like declared_type;
an_obsolete: like obsolete_message; a_preconditions: like preconditions;
a_postconditions: like postconditions; a_clients: like clients;
***************
*** 43,53 ****
an_id_positive: an_id > 0
do
! name := a_name
id := an_id
arguments := args
! type := a_type
obsolete_message := an_obsolete
preconditions := a_preconditions
postconditions := a_postconditions
clients := a_clients
version := an_id
--- 43,56 ----
an_id_positive: an_id > 0
do
! name_item := a_name
id := an_id
arguments := args
! declared_type := a_type
! is_keyword := tokens.is_keyword
obsolete_message := an_obsolete
preconditions := a_preconditions
+ deferred_keyword := tokens.deferred_keyword
postconditions := a_postconditions
+ end_keyword := tokens.end_keyword
clients := a_clients
version := an_id
***************
*** 56,62 ****
first_seed := an_id
ensure
! name_set: name = a_name
arguments_set: arguments = args
! type_set: type = a_type
obsolete_message_set: obsolete_message = an_obsolete
preconditions_set: preconditions = a_preconditions
--- 59,65 ----
first_seed := an_id
ensure
! name_item_set: name_item = a_name
arguments_set: arguments = args
! declared_type_set: declared_type = a_type
obsolete_message_set: obsolete_message = an_obsolete
preconditions_set: preconditions = a_preconditions
***************
*** 72,81 ****
feature -- Duplication
! synonym (a_name: like name): like Current is
-- Synonym feature
do
Result := universe.new_deferred_function (a_name,
! arguments, type, obsolete_message, preconditions,
postconditions, clients, current_class)
end
--- 75,88 ----
feature -- Duplication
! new_synonym (a_name: like name_item): like Current is
-- Synonym feature
do
Result := universe.new_deferred_function (a_name,
! arguments, declared_type, obsolete_message, preconditions,
postconditions, clients, current_class)
+ Result.set_is_keyword (is_keyword)
+ Result.set_deferred_keyword (deferred_keyword)
+ Result.set_end_keyword (end_keyword)
+ Result.set_synonym (Current)
end
***************
*** 86,93 ****
do
Result := universe.new_deferred_function (a_name,
! arguments, type, obsolete_message, preconditions,
postconditions, clients, current_class)
Result.set_implementation_class (implementation_class)
Result.set_version (version)
if seeds /= Void then
Result.set_seeds (seeds)
--- 93,104 ----
do
Result := universe.new_deferred_function (a_name,
! arguments, declared_type, obsolete_message, preconditions,
postconditions, clients, current_class)
+ Result.set_is_keyword (is_keyword)
+ Result.set_deferred_keyword (deferred_keyword)
+ Result.set_end_keyword (end_keyword)
Result.set_implementation_class (implementation_class)
Result.set_version (version)
+ Result.set_frozen_keyword (frozen_keyword)
if seeds /= Void then
Result.set_seeds (seeds)
Index: et_deferred_procedure.e
===================================================================
RCS file: /cvsroot/gobo-eiffel/gobo/library/tools/eiffel/ast/feature/et_deferred_procedure.e,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -r1.4 -r1.5
*** et_deferred_procedure.e 6 Apr 2002 16:29:28 -0000 1.4
--- et_deferred_procedure.e 22 Sep 2002 10:53:38 -0000 1.5
***************
*** 28,32 ****
feature {NONE} -- Initialization
! make (a_name: like name; args: like arguments; an_obsolete: like obsolete_message;
a_preconditions: like preconditions; a_postconditions: like postconditions;
a_clients: like clients; a_class: like current_class; an_id: INTEGER) is
--- 28,32 ----
feature {NONE} -- Initialization
! make (a_name: like name_item; args: like arguments; an_obsolete: like obsolete_message;
a_preconditions: like preconditions; a_postconditions: like postconditions;
a_clients: like clients; a_class: like current_class; an_id: INTEGER) is
***************
*** 38,47 ****
an_id_positive: an_id > 0
do
! name := a_name
id := an_id
arguments := args
obsolete_message := an_obsolete
preconditions := a_preconditions
postconditions := a_postconditions
clients := a_clients
version := an_id
--- 38,50 ----
an_id_positive: an_id > 0
do
! name_item := a_name
id := an_id
arguments := args
+ is_keyword := tokens.is_keyword
obsolete_message := an_obsolete
preconditions := a_preconditions
+ deferred_keyword := tokens.deferred_keyword
postconditions := a_postconditions
+ end_keyword := tokens.end_keyword
clients := a_clients
version := an_id
***************
*** 50,54 ****
first_seed := an_id
ensure
! name_set: name = a_name
arguments_set: arguments = args
obsolete_message_set: obsolete_message = an_obsolete
--- 53,57 ----
first_seed := an_id
ensure
! name_item_set: name_item = a_name
arguments_set: arguments = args
obsolete_message_set: obsolete_message = an_obsolete
***************
*** 65,69 ****
feature -- Duplication
! synonym (a_name: like name): like Current is
-- Synonym feature
do
--- 68,72 ----
feature -- Duplication
! new_synonym (a_name: like name_item): like Current is
-- Synonym feature
do
***************
*** 71,74 ****
--- 74,81 ----
arguments, obsolete_message, preconditions, postconditions,
clients, current_class)
+ Result.set_is_keyword (is_keyword)
+ Result.set_deferred_keyword (deferred_keyword)
+ Result.set_end_keyword (end_keyword)
+ Result.set_synonym (Current)
end
***************
*** 81,86 ****
--- 88,97 ----
arguments, obsolete_message, preconditions, postconditions,
clients, current_class)
+ Result.set_is_keyword (is_keyword)
+ Result.set_deferred_keyword (deferred_keyword)
+ Result.set_end_keyword (end_keyword)
Result.set_implementation_class (implementation_class)
Result.set_version (version)
+ Result.set_frozen_keyword (frozen_keyword)
if seeds /= Void then
Result.set_seeds (seeds)
Index: et_deferred_routine.e
===================================================================
RCS file: /cvsroot/gobo-eiffel/gobo/library/tools/eiffel/ast/feature/et_deferred_routine.e,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -r1.3 -r1.4
*** et_deferred_routine.e 6 Apr 2002 16:29:28 -0000 1.3
--- et_deferred_routine.e 22 Sep 2002 10:53:38 -0000 1.4
***************
*** 25,27 ****
--- 25,48 ----
-- Is feature deferred?
+ feature -- Access
+
+ deferred_keyword: ET_DEFERRED_KEYWORD
+ -- 'deferred' keyword
+
+ feature -- Setting
+
+ set_deferred_keyword (a_deferred: like deferred_keyword) is
+ -- Set `deferred_keyword' to `a_deferred'.
+ require
+ a_deferred_not_void: a_deferred /= Void
+ do
+ deferred_keyword := a_deferred
+ ensure
+ deferred_keyword_set: deferred_keyword = a_deferred
+ end
+
+ invariant
+
+ deferred_keyword_not_void: deferred_keyword /= Void
+
end
Index: et_do_function.e
===================================================================
RCS file: /cvsroot/gobo-eiffel/gobo/library/tools/eiffel/ast/feature/et_do_function.e,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -r1.4 -r1.5
*** et_do_function.e 6 Apr 2002 16:29:28 -0000 1.4
--- et_do_function.e 22 Sep 2002 10:53:38 -0000 1.5
***************
*** 23,32 ****
feature -- Duplication
! synonym (a_name: like name): like Current is
-- Synonym feature
do
Result := universe.new_do_function (a_name,
! arguments, type, obsolete_message, preconditions, locals,
compound, postconditions, rescue_clause, clients, current_class)
end
--- 23,35 ----
feature -- Duplication
! new_synonym (a_name: like name_item): like Current is
-- Synonym feature
do
Result := universe.new_do_function (a_name,
! arguments, declared_type, obsolete_message, preconditions, locals,
compound, postconditions, rescue_clause, clients, current_class)
+ Result.set_is_keyword (is_keyword)
+ Result.set_end_keyword (end_keyword)
+ Result.set_synonym (Current)
end
***************
*** 37,44 ****
do
Result := universe.new_do_function (a_name,
! arguments, type, obsolete_message, preconditions, locals,
compound, postconditions, rescue_clause, clients, current_class)
Result.set_implementation_class (implementation_class)
Result.set_version (version)
if seeds /= Void then
Result.set_seeds (seeds)
--- 40,50 ----
do
Result := universe.new_do_function (a_name,
! arguments, declared_type, obsolete_message, preconditions, locals,
compound, postconditions, rescue_clause, clients, current_class)
+ Result.set_is_keyword (is_keyword)
+ Result.set_end_keyword (end_keyword)
Result.set_implementation_class (implementation_class)
Result.set_version (version)
+ Result.set_frozen_keyword (frozen_keyword)
if seeds /= Void then
Result.set_seeds (seeds)
Index: et_do_procedure.e
===================================================================
RCS file: /cvsroot/gobo-eiffel/gobo/library/tools/eiffel/ast/feature/et_do_procedure.e,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -r1.4 -r1.5
*** et_do_procedure.e 6 Apr 2002 16:29:28 -0000 1.4
--- et_do_procedure.e 22 Sep 2002 10:53:38 -0000 1.5
***************
*** 23,27 ****
feature -- Duplication
! synonym (a_name: like name): like Current is
-- Synonym feature
do
--- 23,27 ----
feature -- Duplication
! new_synonym (a_name: like name_item): like Current is
-- Synonym feature
do
***************
*** 29,32 ****
--- 29,35 ----
obsolete_message, preconditions, locals, compound, postconditions,
rescue_clause, clients, current_class)
+ Result.set_is_keyword (is_keyword)
+ Result.set_end_keyword (end_keyword)
+ Result.set_synonym (Current)
end
***************
*** 39,44 ****
--- 42,50 ----
obsolete_message, preconditions, locals, compound, postconditions,
rescue_clause, clients, current_class)
+ Result.set_is_keyword (is_keyword)
+ Result.set_end_keyword (end_keyword)
Result.set_implementation_class (implementation_class)
Result.set_version (version)
+ Result.set_frozen_keyword (frozen_keyword)
if seeds /= Void then
Result.set_seeds (seeds)
Index: et_external_function.e
===================================================================
RCS file: /cvsroot/gobo-eiffel/gobo/library/tools/eiffel/ast/feature/et_external_function.e,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -r1.4 -r1.5
*** et_external_function.e 6 Apr 2002 16:29:28 -0000 1.4
--- et_external_function.e 22 Sep 2002 10:53:38 -0000 1.5
***************
*** 28,32 ****
feature {NONE} -- Initialization
! make (a_name: like name; args: like arguments; a_type: like type;
an_obsolete: like obsolete_message; a_preconditions: like preconditions;
a_language: like language; an_alias: like alias_clause;
--- 28,32 ----
feature {NONE} -- Initialization
! make (a_name: like name_item; args: like arguments; a_type: like declared_type;
an_obsolete: like obsolete_message; a_preconditions: like preconditions;
a_language: like language; an_alias: like alias_clause;
***************
*** 42,49 ****
an_id_positive: an_id > 0
do
! name := a_name
id := an_id
arguments := args
! type := a_type
obsolete_message := an_obsolete
preconditions := a_preconditions
--- 42,50 ----
an_id_positive: an_id > 0
do
! name_item := a_name
id := an_id
arguments := args
! declared_type := a_type
! is_keyword := tokens.is_keyword
obsolete_message := an_obsolete
preconditions := a_preconditions
***************
*** 51,54 ****
--- 52,56 ----
alias_clause := an_alias
postconditions := a_postconditions
+ end_keyword := tokens.end_keyword
clients := a_clients
version := an_id
***************
*** 57,63 ****
first_seed := an_id
ensure
! name_set: name = a_name
arguments_set: arguments = args
! type_set: type = a_type
obsolete_message_set: obsolete_message = an_obsolete
preconditions_set: preconditions = a_preconditions
--- 59,65 ----
first_seed := an_id
ensure
! name_item_set: name_item = a_name
arguments_set: arguments = args
! declared_type_set: declared_type = a_type
obsolete_message_set: obsolete_message = an_obsolete
preconditions_set: preconditions = a_preconditions
***************
*** 75,84 ****
feature -- Duplication
! synonym (a_name: like name): like Current is
-- Synonym feature
do
Result := universe.new_external_function (a_name, arguments,
! type, obsolete_message, preconditions, language, alias_clause,
postconditions, clients, current_class)
end
--- 77,89 ----
feature -- Duplication
! new_synonym (a_name: like name_item): like Current is
-- Synonym feature
do
Result := universe.new_external_function (a_name, arguments,
! declared_type, obsolete_message, preconditions, language, alias_clause,
postconditions, clients, current_class)
+ Result.set_is_keyword (is_keyword)
+ Result.set_end_keyword (end_keyword)
+ Result.set_synonym (Current)
end
***************
*** 89,96 ****
do
Result := universe.new_external_function (a_name, arguments,
! type, obsolete_message, preconditions, language, alias_clause,
! postconditions, clients, current_class)
Result.set_implementation_class (implementation_class)
Result.set_version (version)
if seeds /= Void then
Result.set_seeds (seeds)
--- 94,104 ----
do
Result := universe.new_external_function (a_name, arguments,
! declared_type, obsolete_message, preconditions, language,
! alias_clause, postconditions, clients, current_class)
! Result.set_is_keyword (is_keyword)
! Result.set_end_keyword (end_keyword)
Result.set_implementation_class (implementation_class)
Result.set_version (version)
+ Result.set_frozen_keyword (frozen_keyword)
if seeds /= Void then
Result.set_seeds (seeds)
Index: et_external_procedure.e
===================================================================
RCS file: /cvsroot/gobo-eiffel/gobo/library/tools/eiffel/ast/feature/et_external_procedure.e,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -r1.4 -r1.5
*** et_external_procedure.e 6 Apr 2002 16:29:28 -0000 1.4
--- et_external_procedure.e 22 Sep 2002 10:53:38 -0000 1.5
***************
*** 24,28 ****
feature {NONE} -- Initialization
! make (a_name: like name; args: like arguments;
an_obsolete: like obsolete_message; a_preconditions: like preconditions;
a_language: like language; an_alias: like alias_clause;
--- 24,28 ----
feature {NONE} -- Initialization
! make (a_name: like name_item; args: like arguments;
an_obsolete: like obsolete_message; a_preconditions: like preconditions;
a_language: like language; an_alias: like alias_clause;
***************
*** 36,43 ****
a_class_not_void: a_class /= Void
an_id_positive: an_id > 0
! do
! name := a_name
id := an_id
arguments := args
obsolete_message := an_obsolete
preconditions := a_preconditions
--- 36,44 ----
a_class_not_void: a_class /= Void
an_id_positive: an_id > 0
! do
! name_item := a_name
id := an_id
arguments := args
+ is_keyword := tokens.is_keyword
obsolete_message := an_obsolete
preconditions := a_preconditions
***************
*** 45,48 ****
--- 46,50 ----
alias_clause := an_alias
postconditions := a_postconditions
+ end_keyword := tokens.end_keyword
clients := a_clients
version := an_id
***************
*** 51,55 ****
first_seed := an_id
ensure
! name_set: name = a_name
arguments_set: arguments = args
obsolete_message_set: obsolete_message = an_obsolete
--- 53,57 ----
first_seed := an_id
ensure
! name_item_set: name_item = a_name
arguments_set: arguments = args
obsolete_message_set: obsolete_message = an_obsolete
***************
*** 68,72 ****
feature -- Duplication
! synonym (a_name: like name): like Current is
-- Synonym feature
do
--- 70,74 ----
feature -- Duplication
! new_synonym (a_name: like name_item): like Current is
-- Synonym feature
do
***************
*** 74,77 ****
--- 76,82 ----
arguments, obsolete_message, preconditions, language,
alias_clause, postconditions, clients, current_class)
+ Result.set_is_keyword (is_keyword)
+ Result.set_end_keyword (end_keyword)
+ Result.set_synonym (Current)
end
***************
*** 84,89 ****
--- 89,97 ----
arguments, obsolete_message, preconditions, language,
alias_clause, postconditions, clients, current_class)
+ Result.set_is_keyword (is_keyword)
+ Result.set_end_keyword (end_keyword)
Result.set_implementation_class (implementation_class)
Result.set_version (version)
+ Result.set_frozen_keyword (frozen_keyword)
if seeds /= Void then
Result.set_seeds (seeds)
Index: et_external_routine.e
===================================================================
RCS file: /cvsroot/gobo-eiffel/gobo/library/tools/eiffel/ast/feature/et_external_routine.e,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -r1.3 -r1.4
*** et_external_routine.e 6 Apr 2002 16:29:28 -0000 1.3
--- et_external_routine.e 22 Sep 2002 10:53:38 -0000 1.4
***************
*** 19,26 ****
feature -- Access
! language: ET_MANIFEST_STRING
-- External language
! alias_clause: ET_MANIFEST_STRING
-- Alias clause
--- 19,26 ----
feature -- Access
! language: ET_EXTERNAL_LANGUAGE
-- External language
! alias_clause: ET_EXTERNAL_ALIAS
-- Alias clause
Index: et_feature.e
===================================================================
RCS file: /cvsroot/gobo-eiffel/gobo/library/tools/eiffel/ast/feature/et_feature.e,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -r1.7 -r1.8
*** et_feature.e 9 Apr 2002 11:07:23 -0000 1.7
--- et_feature.e 22 Sep 2002 10:53:38 -0000 1.8
***************
*** 15,24 ****
inherit
HASHABLE
feature -- Access
! name: ET_FEATURE_NAME
-- Feature name
current_class: ET_CLASS
--- 15,31 ----
inherit
+ ET_FEATURE_ITEM
+
HASHABLE
feature -- Access
! name: ET_FEATURE_NAME is
-- Feature name
+ do
+ Result := name_item.feature_name
+ ensure
+ name_not_void: Result /= Void
+ end
current_class: ET_CLASS
***************
*** 99,106 ****
end
feature -- Status report
! is_frozen: BOOLEAN
-- Has feature been declared as frozen?
is_deferred: BOOLEAN is
--- 106,143 ----
end
+ name_item: ET_FEATURE_NAME_ITEM
+ -- Feature name (possibly followed by comma for synomyms)
+
+ frozen_keyword: ET_TOKEN
+ -- 'frozen' keyword
+
+ synonym: ET_FEATURE
+ -- Next synonym if any
+
+ position: ET_POSITION is
+ -- Position of first character of
+ -- current node in source code
+ do
+ if not is_frozen then
+ Result := name.position
+ else
+ -- TODO:
+ Result := name.position
+ end
+ end
+
+ feature_item: ET_FEATURE is
+ -- Feature in semicolon-separated list
+ do
+ Result := Current
+ end
+
feature -- Status report
! is_frozen: BOOLEAN is
-- Has feature been declared as frozen?
+ do
+ Result := (frozen_keyword /= Void)
+ end
is_deferred: BOOLEAN is
***************
*** 285,301 ****
end
! feature -- Status setting
! set_frozen is
! -- Set `is_frozen' to true.
do
! is_frozen := True
ensure
! is_frozen: is_frozen
end
feature -- Duplication
! synonym (a_name: like name): like Current is
-- Synonym feature
require
--- 322,344 ----
end
! set_frozen_keyword (a_frozen: like frozen_keyword) is
! -- Set `frozen_keyword' to `a_frozen'.
! do
! frozen_keyword := a_frozen
! ensure
! frozen_keyword_set: frozen_keyword = a_frozen
! end
! set_synonym (a_synonym: like synonym) is
! -- Set `synonym' to `a_synonym'.
do
! synonym := a_synonym
ensure
! synonym_set: a_synonym = a_synonym
end
feature -- Duplication
! new_synonym (a_name: like name_item): like Current is
-- Synonym feature
require
***************
*** 303,308 ****
deferred
ensure
! synonym_not_void: Result /= Void
! name_set: Result.name = a_name
end
--- 346,351 ----
deferred
ensure
! new_synonym_not_void: Result /= Void
! name_item_set: Result.name_item = a_name
end
***************
*** 375,379 ****
invariant
! name_not_void: name /= Void
id_positive: id > 0
current_class_not_void: current_class /= Void
--- 418,422 ----
invariant
! name_item_not_void: name_item /= Void
id_positive: id > 0
current_class_not_void: current_class /= Void
Index: et_formal_argument.e
===================================================================
RCS file: /cvsroot/gobo-eiffel/gobo/library/tools/eiffel/ast/feature/et_formal_argument.e,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -r1.5 -r1.6
*** et_formal_argument.e 6 Apr 2002 16:29:28 -0000 1.5
--- et_formal_argument.e 22 Sep 2002 10:53:38 -0000 1.6
***************
*** 19,23 ****
feature {NONE} -- Initialization
! make (a_name: like name_item; a_type: like type) is
-- Create a new formal argument.
require
--- 19,23 ----
feature {NONE} -- Initialization
! make (a_name: like name_item; a_type: like declared_type) is
-- Create a new formal argument.
require
***************
*** 26,33 ****
do
name_item := a_name
! type := a_type
ensure
name_item_set: name_item = a_name
! type_set: type = a_type
end
--- 26,33 ----
do
name_item := a_name
! declared_type := a_type
ensure
name_item_set: name_item = a_name
! declared_type_set: declared_type = a_type
end
***************
*** 37,51 ****
-- Name
do
! Result := name_item.identifier_item
ensure
name_not_void: Result /= Void
end
! type: ET_TYPE
-- Type
name_item: ET_ARGUMENT_NAME
-- Name follow by a comma or semicolon
formal_argument_item: ET_FORMAL_ARGUMENT is
-- Formal argument in semicolon-separated list
--- 37,57 ----
-- Name
do
! Result := name_item.identifier
ensure
name_not_void: Result /= Void
end
! type: ET_TYPE is
-- Type
+ do
+ Result := declared_type.declared_type
+ end
name_item: ET_ARGUMENT_NAME
-- Name follow by a comma or semicolon
+ declared_type: ET_DECLARED_TYPE
+ -- Declared type (type preceded by a colon)
+
formal_argument_item: ET_FORMAL_ARGUMENT is
-- Formal argument in semicolon-separated list
***************
*** 63,74 ****
feature -- Setting
! set_type (a_type: like type) is
! -- Set `type' to `a_type'.
require
a_type_not_void: a_type /= Void
do
! type := a_type
ensure
! type_set: type = a_type
end
--- 69,80 ----
feature -- Setting
! set_declared_type (a_type: like declared_type) is
! -- Set `declared_type' to `a_type'.
require
a_type_not_void: a_type /= Void
do
! declared_type := a_type
ensure
! declared_type_set: declared_type = a_type
end
***************
*** 88,93 ****
immediate_or_redeclared: a_feature.implementation_class = a_class
do
! type := type.resolved_identifier_types (a_feature, args, a_class)
end
end
--- 94,104 ----
immediate_or_redeclared: a_feature.implementation_class = a_class
do
! declared_type := declared_type.resolved_identifier_types (a_feature, args, a_class)
end
+
+ invariant
+
+ name_item_not_void: name_item /= Void
+ declared_type_not_void: declared_type /= Void
end
Index: et_formal_arguments.e
===================================================================
RCS file: /cvsroot/gobo-eiffel/gobo/library/tools/eiffel/ast/feature/et_formal_arguments.e,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -r1.6 -r1.7
*** et_formal_arguments.e 6 Apr 2002 16:29:28 -0000 1.6
--- et_formal_arguments.e 22 Sep 2002 10:53:38 -0000 1.7
***************
*** 186,204 ****
i: INTEGER
arg: ET_FORMAL_ARGUMENT
! a_type, new_type: ET_TYPE
do
i := count
from until i < 1 loop
arg := formal_argument (i)
! if arg.type = a_type then
-- This argument shares the same
-- type as the previous argument.
! arg.set_type (new_type)
else
! a_type := arg.type
! if a_type.has_formal_parameters (actual_parameters) then
new_type := a_type.deep_cloned_type
new_type := new_type.resolved_formal_parameters (actual_parameters)
! arg.set_type (new_type)
else
new_type := a_type
--- 186,204 ----
i: INTEGER
arg: ET_FORMAL_ARGUMENT
! a_type, new_type: ET_DECLARED_TYPE
do
i := count
from until i < 1 loop
arg := formal_argument (i)
! if arg.declared_type = a_type then
-- This argument shares the same
-- type as the previous argument.
! arg.set_declared_type (new_type)
else
! a_type := arg.declared_type
! if a_type.declared_type.has_formal_parameters (actual_parameters) then
new_type := a_type.deep_cloned_type
new_type := new_type.resolved_formal_parameters (actual_parameters)
! arg.set_declared_type (new_type)
else
new_type := a_type
Index: et_function.e
===================================================================
RCS file: /cvsroot/gobo-eiffel/gobo/library/tools/eiffel/ast/feature/et_function.e,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -r1.5 -r1.6
*** et_function.e 6 Apr 2002 16:29:28 -0000 1.5
--- et_function.e 22 Sep 2002 10:53:38 -0000 1.6
***************
*** 61,67 ****
-- Undefined version of current feature
do
! Result := universe.new_deferred_function (a_name,
! arguments, type, obsolete_message, preconditions, postconditions,
clients, current_class)
Result.set_implementation_class (implementation_class)
if seeds /= Void then
--- 61,69 ----
-- Undefined version of current feature
do
! Result := universe.new_deferred_function (a_name, arguments,
! declared_type, obsolete_message, preconditions, postconditions,
clients, current_class)
+ Result.set_is_keyword (is_keyword)
+ Result.set_end_keyword (end_keyword)
Result.set_implementation_class (implementation_class)
if seeds /= Void then
***************
*** 112,117 ****
do
if type.has_formal_parameters (actual_parameters) then
! type := type.deep_cloned_type
! type := type.resolved_formal_parameters (actual_parameters)
end
if arguments /= Void then
--- 114,119 ----
do
if type.has_formal_parameters (actual_parameters) then
! declared_type := declared_type.deep_cloned_type
! declared_type := declared_type.resolved_formal_parameters (actual_parameters)
end
if arguments /= Void then
***************
*** 134,138 ****
arguments.resolve_identifier_types (Current, a_class)
end
! type := type.resolved_identifier_types (Current, arguments, a_class)
end
--- 136,140 ----
arguments.resolve_identifier_types (Current, a_class)
end
! declared_type := declared_type.resolved_identifier_types (Current, arguments, a_class)
end
Index: et_internal_function.e
===================================================================
RCS file: /cvsroot/gobo-eiffel/gobo/library/tools/eiffel/ast/feature/et_internal_function.e,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -r1.5 -r1.6
*** et_internal_function.e 6 Apr 2002 16:29:28 -0000 1.5
--- et_internal_function.e 22 Sep 2002 10:53:38 -0000 1.6
***************
*** 27,31 ****
feature {NONE} -- Initialization
! make (a_name: like name; args: like arguments; a_type: like type;
an_obsolete: like obsolete_message; a_preconditions: like preconditions;
a_locals: like locals; a_compound: like compound;
--- 27,31 ----
feature {NONE} -- Initialization
! make (a_name: like name_item; args: like arguments; a_type: like declared_type;
an_obsolete: like obsolete_message; a_preconditions: like preconditions;
a_locals: like locals; a_compound: like compound;
***************
*** 36,47 ****
a_name_not_void: a_name /= Void
a_type_not_void: a_type /= Void
a_clients_not_void: a_clients /= Void
a_class_not_void: a_class /= Void
an_id_positive: an_id > 0
do
! name := a_name
id := an_id
arguments := args
! type := a_type
obsolete_message := an_obsolete
preconditions := a_preconditions
--- 36,49 ----
a_name_not_void: a_name /= Void
a_type_not_void: a_type /= Void
+ a_compound_not_void: a_compound /= Void
a_clients_not_void: a_clients /= Void
a_class_not_void: a_class /= Void
an_id_positive: an_id > 0
do
! name_item := a_name
id := an_id
arguments := args
! declared_type := a_type
! is_keyword := tokens.is_keyword
obsolete_message := an_obsolete
preconditions := a_preconditions
***************
*** 50,53 ****
--- 52,56 ----
postconditions := a_postconditions
rescue_clause := a_rescue
+ end_keyword := tokens.end_keyword
clients := a_clients
version := an_id
***************
*** 56,62 ****
first_seed := an_id
ensure
! name_set: name = a_name
arguments_set: arguments = args
! type_set: type = a_type
obsolete_message_set: obsolete_message = an_obsolete
preconditions_set: preconditions = a_preconditions
--- 59,65 ----
first_seed := an_id
ensure
! name_item_set: name_item = a_name
arguments_set: arguments = args
! declared_type_set: declared_type = a_type
obsolete_message_set: obsolete_message = an_obsolete
preconditions_set: preconditions = a_preconditions
***************
*** 86,92 ****
locals.add_to_system
end
! if compound /= Void then
! compound.add_to_system
! end
end
--- 89,93 ----
locals.add_to_system
end
! compound.add_to_system
end
Index: et_internal_procedure.e
===================================================================
RCS file: /cvsroot/gobo-eiffel/gobo/library/tools/eiffel/ast/feature/et_internal_procedure.e,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -r1.5 -r1.6
*** et_internal_procedure.e 6 Apr 2002 16:29:28 -0000 1.5
--- et_internal_procedure.e 22 Sep 2002 10:53:38 -0000 1.6
***************
*** 24,28 ****
feature {NONE} -- Initialization
! make (a_name: like name; args: like arguments; an_obsolete: like obsolete_message;
a_preconditions: like preconditions; a_locals: like locals;
a_compound: like compound; a_postconditions: like postconditions;
--- 24,28 ----
feature {NONE} -- Initialization
! make (a_name: like name_item; args: like arguments; an_obsolete: like obsolete_message;
a_preconditions: like preconditions; a_locals: like locals;
a_compound: like compound; a_postconditions: like postconditions;
***************
*** 32,42 ****
require
a_name_not_void: a_name /= Void
a_clients_not_void: a_clients /= Void
a_class_not_void: a_class /= Void
an_id_positive: an_id > 0
do
! name := a_name
id := an_id
arguments := args
obsolete_message := an_obsolete
preconditions := a_preconditions
--- 32,44 ----
require
a_name_not_void: a_name /= Void
+ a_compound_not_void: a_compound /= Void
a_clients_not_void: a_clients /= Void
a_class_not_void: a_class /= Void
an_id_positive: an_id > 0
do
! name_item := a_name
id := an_id
arguments := args
+ is_keyword := tokens.is_keyword
obsolete_message := an_obsolete
preconditions := a_preconditions
***************
*** 45,48 ****
--- 47,51 ----
postconditions := a_postconditions
rescue_clause := a_rescue
+ end_keyword := tokens.end_keyword
clients := a_clients
version := an_id
***************
*** 51,55 ****
first_seed := an_id
ensure
! name_set: name = a_name
arguments_set: arguments = args
obsolete_message_set: obsolete_message = an_obsolete
--- 54,58 ----
first_seed := an_id
ensure
! name_item_set: name_item = a_name
arguments_set: arguments = args
obsolete_message_set: obsolete_message = an_obsolete
***************
*** 79,85 ****
locals.add_to_system
end
! if compound /= Void then
! compound.add_to_system
! end
end
--- 82,86 ----
locals.add_to_system
end
! compound.add_to_system
end
Index: et_internal_routine.e
===================================================================
RCS file: /cvsroot/gobo-eiffel/gobo/library/tools/eiffel/ast/feature/et_internal_routine.e,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -r1.3 -r1.4
*** et_internal_routine.e 6 Apr 2002 16:29:28 -0000 1.3
--- et_internal_routine.e 22 Sep 2002 10:53:38 -0000 1.4
***************
*** 28,30 ****
--- 28,34 ----
-- Rescue clause
+ invariant
+
+ compound_not_void: compound /= Void
+
end
Index: et_local_variable.e
===================================================================
RCS file: /cvsroot/gobo-eiffel/gobo/library/tools/eiffel/ast/feature/et_local_variable.e,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -r1.4 -r1.5
*** et_local_variable.e 6 Apr 2002 16:29:28 -0000 1.4
--- et_local_variable.e 22 Sep 2002 10:53:39 -0000 1.5
***************
*** 19,23 ****
feature {NONE} -- Initialization
! make (a_name: like name_item; a_type: like type) is
-- Create a new local variable.
require
--- 19,23 ----
feature {NONE} -- Initialization
! make (a_name: like name_item; a_type: like declared_type) is
-- Create a new local variable.
require
***************
*** 26,33 ****
do
name_item := a_name
! type := a_type
ensure
name_set: name_item = a_name
! type_set: type = a_type
end
--- 26,33 ----
do
name_item := a_name
! declared_type := a_type
ensure
name_set: name_item = a_name
! declared_type_set: declared_type = a_type
end
***************
*** 37,51 ****
-- Name
do
! Result := name_item.identifier_item
ensure
name_not_void: Result /= Void
end
! type: ET_TYPE
-- Type
name_item: ET_LOCAL_NAME
-- Name follow by a comma or semicolon
local_variable_item: ET_LOCAL_VARIABLE is
-- Local variable in semicolon-separated list
--- 37,57 ----
-- Name
do
! Result := name_item.identifier
ensure
name_not_void: Result /= Void
end
! type: ET_TYPE is
-- Type
+ do
+ Result := declared_type.declared_type
+ end
name_item: ET_LOCAL_NAME
-- Name follow by a comma or semicolon
+ declared_type: ET_DECLARED_TYPE
+ -- Declared type (type preceded by a colon)
+
local_variable_item: ET_LOCAL_VARIABLE is
-- Local variable in semicolon-separated list
***************
*** 64,67 ****
--- 70,74 ----
name_item_not_void: name_item /= Void
+ declared_type_not_void: declared_type /= Void
end
Index: et_once_function.e
===================================================================
RCS file: /cvsroot/gobo-eiffel/gobo/library/tools/eiffel/ast/feature/et_once_function.e,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -r1.4 -r1.5
*** et_once_function.e 6 Apr 2002 16:29:28 -0000 1.4
--- et_once_function.e 22 Sep 2002 10:53:39 -0000 1.5
***************
*** 23,32 ****
feature -- Duplication
! synonym (a_name: like name): like Current is
-- Synonym feature
do
! Result := universe.new_once_function (a_name, arguments, type,
obsolete_message, preconditions, locals, compound, postconditions,
rescue_clause, clients, current_class)
end
--- 23,35 ----
feature -- Duplication
! new_synonym (a_name: like name_item): like Current is
-- Synonym feature
do
! Result := universe.new_once_function (a_name, arguments, declared_type,
obsolete_message, preconditions, locals, compound, postconditions,
rescue_clause, clients, current_class)
+ Result.set_is_keyword (is_keyword)
+ Result.set_end_keyword (end_keyword)
+ Result.set_synonym (Current)
end
***************
*** 36,44 ****
-- Renamed version of current feature
do
! Result := universe.new_once_function (a_name, arguments, type,
obsolete_message, preconditions, locals, compound, postconditions,
rescue_clause, clients, current_class)
Result.set_implementation_class (implementation_class)
Result.set_version (version)
if seeds /= Void then
Result.set_seeds (seeds)
--- 39,50 ----
-- Renamed version of current feature
do
! Result := universe.new_once_function (a_name, arguments, declared_type,
obsolete_message, preconditions, locals, compound, postconditions,
rescue_clause, clients, current_class)
+ Result.set_is_keyword (is_keyword)
+ Result.set_end_keyword (end_keyword)
Result.set_implementation_class (implementation_class)
Result.set_version (version)
+ Result.set_frozen_keyword (frozen_keyword)
if seeds /= Void then
Result.set_seeds (seeds)
Index: et_once_procedure.e
===================================================================
RCS file: /cvsroot/gobo-eiffel/gobo/library/tools/eiffel/ast/feature/et_once_procedure.e,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -r1.4 -r1.5
*** et_once_procedure.e 6 Apr 2002 16:29:28 -0000 1.4
--- et_once_procedure.e 22 Sep 2002 10:53:39 -0000 1.5
***************
*** 23,27 ****
feature -- Duplication
! synonym (a_name: like name): like Current is
-- Synonym feature
do
--- 23,27 ----
feature -- Duplication
! new_synonym (a_name: like name_item): like Current is
-- Synonym feature
do
***************
*** 29,32 ****
--- 29,35 ----
obsolete_message, preconditions, locals, compound, postconditions,
rescue_clause, clients, current_class)
+ Result.set_is_keyword (is_keyword)
+ Result.set_end_keyword (end_keyword)
+ Result.set_synonym (Current)
end
***************
*** 39,44 ****
--- 42,50 ----
obsolete_message, preconditions, locals, compound, postconditions,
rescue_clause, clients, current_class)
+ Result.set_is_keyword (is_keyword)
+ Result.set_end_keyword (end_keyword)
Result.set_implementation_class (implementation_class)
Result.set_version (version)
+ Result.set_frozen_keyword (frozen_keyword)
if seeds /= Void then
Result.set_seeds (seeds)
Index: et_procedure.e
===================================================================
RCS file: /cvsroot/gobo-eiffel/gobo/library/tools/eiffel/ast/feature/et_procedure.e,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -r1.5 -r1.6
*** et_procedure.e 6 Apr 2002 16:29:28 -0000 1.5
--- et_procedure.e 22 Sep 2002 10:53:39 -0000 1.6
***************
*** 42,45 ****
--- 42,47 ----
Result := universe.new_deferred_procedure (a_name, arguments,
obsolete_message, preconditions, postconditions, clients, current_class)
+ Result.set_is_keyword (is_keyword)
+ Result.set_end_keyword (end_keyword)
Result.set_implementation_class (implementation_class)
if seeds /= Void then
Index: et_query.e
===================================================================
RCS file: /cvsroot/gobo-eiffel/gobo/library/tools/eiffel/ast/feature/et_query.e,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -r1.5 -r1.6
*** et_query.e 6 Apr 2002 16:29:28 -0000 1.5
--- et_query.e 22 Sep 2002 10:53:39 -0000 1.6
***************
*** 19,24 ****
feature -- Access
! type: ET_TYPE
-- Return type
signature: ET_SIGNATURE is
--- 19,32 ----
feature -- Access
! type: ET_TYPE is
-- Return type
+ do
+ Result := declared_type.declared_type
+ ensure
+ type_not_void: Result /= Void
+ end
+
+ declared_type: ET_DECLARED_TYPE
+ -- Declared type (type preceded by a colon)
signature: ET_SIGNATURE is
***************
*** 34,39 ****
-- Undefined version of current feature
do
! Result := universe.new_deferred_function (a_name,
! Void, type, Void, Void, Void, clients, current_class)
Result.set_implementation_class (implementation_class)
if seeds /= Void then
--- 42,47 ----
-- Undefined version of current feature
do
! Result := universe.new_deferred_function (a_name, Void,
! declared_type, Void, Void, Void, clients, current_class)
Result.set_implementation_class (implementation_class)
if seeds /= Void then
***************
*** 76,81 ****
do
if type.has_formal_parameters (actual_parameters) then
! type := type.deep_cloned_type
! type := type.resolved_formal_parameters (actual_parameters)
end
end
--- 84,89 ----
do
if type.has_formal_parameters (actual_parameters) then
! declared_type := declared_type.deep_cloned_type
! declared_type := declared_type.resolved_formal_parameters (actual_parameters)
end
end
***************
*** 89,98 ****
-- true if an error occurs.
do
! type := type.resolved_identifier_types (Current, Void, a_class)
end
invariant
! type_not_void: type /= Void
end
--- 97,106 ----
-- true if an error occurs.
do
! declared_type := declared_type.resolved_identifier_types (Current, Void, a_class)
end
invariant
! declared_type_not_void: declared_type /= Void
end
Index: et_routine.e
===================================================================
RCS file: /cvsroot/gobo-eiffel/gobo/library/tools/eiffel/ast/feature/et_routine.e,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -r1.4 -r1.5
*** et_routine.e 6 Apr 2002 16:29:28 -0000 1.4
--- et_routine.e 22 Sep 2002 10:53:39 -0000 1.5
***************
*** 17,20 ****
--- 17,22 ----
ET_FEATURE
+ ET_SHARED_TOKEN_CONSTANTS
+
feature -- Access
***************
*** 22,25 ****
--- 24,30 ----
-- Formal arguments
+ is_keyword: ET_TOKEN
+ -- 'is' keyword
+
obsolete_message: ET_OBSOLETE
-- Obsolete message
***************
*** 30,33 ****
--- 35,74 ----
postconditions: ET_POSTCONDITIONS
-- Postconditions
+
+ end_keyword: ET_TOKEN
+ -- 'end' keyword
+
+ break: ET_BREAK is
+ -- Break which appears just after current node
+ do
+ Result := end_keyword.break
+ end
+
+ feature -- Setting
+
+ set_is_keyword (an_is: like is_keyword) is
+ -- Set `is_keyword' to `an_is'.
+ require
+ an_is_not_void: an_is /= Void
+ do
+ is_keyword := an_is
+ ensure
+ is_keyword_set: is_keyword = an_is
+ end
+
+ set_end_keyword (an_end: like end_keyword) is
+ -- Set `end_keyword' to `an_end'.
+ require
+ an_end_not_void: an_end /= Void
+ do
+ end_keyword := an_end
+ ensure
+ end_keyword_set: end_keyword = an_end
+ end
+
+ invariant
+
+ is_keyword_not_void: is_keyword /= Void
+ end_keyword_not_void: end_keyword /= Void
end
Index: et_unique_attribute.e
===================================================================
RCS file: /cvsroot/gobo-eiffel/gobo/library/tools/eiffel/ast/feature/et_unique_attribute.e,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -r1.4 -r1.5
*** et_unique_attribute.e 6 Apr 2002 16:29:28 -0000 1.4
--- et_unique_attribute.e 22 Sep 2002 10:53:39 -0000 1.5
***************
*** 21,24 ****
--- 21,26 ----
end
+ ET_SHARED_TOKEN_CONSTANTS
+
creation
***************
*** 27,31 ****
feature {NONE} -- Initialization
! make (a_name: like name; a_type: like type; a_clients: like clients;
a_class: like current_class; an_id: INTEGER) is
-- Create a new unique attribute.
--- 29,33 ----
feature {NONE} -- Initialization
! make (a_name: like name_item; a_type: like declared_type; a_clients: like clients;
a_class: like current_class; an_id: INTEGER) is
-- Create a new unique attribute.
***************
*** 37,43 ****
an_id_positive: an_id > 0
do
! name := a_name
id := an_id
! type := a_type
clients := a_clients
version := an_id
--- 39,47 ----
an_id_positive: an_id > 0
do
! name_item := a_name
id := an_id
! declared_type := a_type
! is_keyword := tokens.is_keyword
! unique_keyword := tokens.unique_keyword
clients := a_clients
version := an_id
***************
*** 46,51 ****
first_seed := an_id
ensure
! name_set: name = a_name
! type_set: type = a_type
clients_set: clients = a_clients
version_set: version = an_id
--- 50,55 ----
first_seed := an_id
ensure
! name_item_set: name_item = a_name
! declared_type_set: declared_type = a_type
clients_set: clients = a_clients
version_set: version = an_id
***************
*** 65,75 ****
-- the form 'prefix ...'?
feature -- Duplication
! synonym (a_name: like name): like Current is
-- Synonym feature
do
Result := universe.new_unique_attribute (a_name,
! type, clients, current_class)
end
--- 69,118 ----
-- the form 'prefix ...'?
+ feature -- Access
+
+ is_keyword: ET_TOKEN
+ -- 'is' keyword
+
+ unique_keyword: ET_TOKEN
+ -- 'unique' keyword
+
+ break: ET_BREAK is
+ -- Break which appears just after current node
+ do
+ Result := unique_keyword.break
+ end
+
+ feature -- Setting
+
+ set_is_keyword (an_is: like is_keyword) is
+ -- Set `is_keyword' to `an_is'.
+ require
+ an_is_not_void: an_is /= Void
+ do
+ is_keyword := an_is
+ ensure
+ is_keyword_set: is_keyword = an_is
+ end
+
+ set_unique_keyword (a_unique: like unique_keyword) is
+ -- Set `unique_keyword' to `a_unique'.
+ require
+ a_unique_not_void: a_unique /= Void
+ do
+ unique_keyword := a_unique
+ ensure
+ unique_keyword_set: unique_keyword = a_unique
+ end
+
feature -- Duplication
! new_synonym (a_name: like name_item): like Current is
-- Synonym feature
do
Result := universe.new_unique_attribute (a_name,
! declared_type, clients, current_class)
! Result.set_is_keyword (is_keyword)
! Result.set_unique_keyword (unique_keyword)
! Result.set_synonym (Current)
end
***************
*** 80,86 ****
do
Result := universe.new_unique_attribute (a_name,
! type, clients, current_class)
Result.set_implementation_class (implementation_class)
Result.set_version (version)
if seeds /= Void then
Result.set_seeds (seeds)
--- 123,132 ----
do
Result := universe.new_unique_attribute (a_name,
! declared_type, clients, current_class)
! Result.set_is_keyword (is_keyword)
! Result.set_unique_keyword (unique_keyword)
Result.set_implementation_class (implementation_class)
Result.set_version (version)
+ Result.set_frozen_keyword (frozen_keyword)
if seeds /= Void then
Result.set_seeds (seeds)
***************
*** 94,97 ****
--- 140,148 ----
end
end
+
+ invariant
+
+ is_keyword_not_void: is_keyword /= Void
+ unique_keyword_not_void: unique_keyword /= Void
end
|