Feature #1478
Generate proper names for emitted Lisp objects
Status: | Resolved | Start date: | 04/25/2013 | |
---|---|---|---|---|
Priority: | Normal | Due date: | ||
Assignee: | J. Moringen | % Done: | 100% | |
Category: | Core Backend | |||
Target version: | rosetta-0.2 |
Description
- dotted package name, including
- creation of the package
- normalized components
- normalized final component of the qname
Associated revisions
Fixed Lisp name generation in src/backend/emitter-lisp.lisp
fixes #1478
- src/model/language/protocol.lisp (legalize-name t list): new method;
default behavior for qnames - src/model/language/mixins.lisp (name-legalizer-mixin): new class;
factored out name-legalizer slot and `legalize-name' method from
`reserved-words-mixin' into this class
(legalize-name name-legalizer-mixin string): new method; extracted
from method for `reserved-words-mixin'
(reserved-words-mixin): added superclass `name-legalizer-mixin';
removed name-legalizer slot;
(legalize-name reserved-words-mixin string): adapted - src/model/language/languages.lisp (language-lisp): added superclass
name-legalizer-mixin - src/model/language/package.lisp (package rosetta.model.language):
added used packages rosetta and rosetta.model - src/backend/emitter-lisp.lisp
(emit/context named-mixin t language-lisp): use `legalize-name' to
generate package and symbol names; create package and/or symbol as
necessary - test/model/data/package.lisp (package rosetta.model.data.test):
added exported symbol struct/packaged
(struct/packaged): new parameter; contains a packaged struct for
naming-related tests - test/model/language/languages.lisp
(define-language-test-suite lisp): added test case for method on
`legalize-name' - rosetta.asd (system rosetta): added dependency of module
model-language on module model - test/backend/emitter-lisp.lisp
(test backend-emitter-lisp-root::emit-instantiate/smoke): added case
for struct/packaged
(test backend-emitter-lisp-root::emit-definition/class/smoke):
likewise
Fixed Lisp name generation in src/backend/emitter-lisp.lisp
fixes #1478
- src/model/language/protocol.lisp (legalize-name t list): new method;
default behavior for qnames - src/model/language/mixins.lisp (name-legalizer-mixin): new class;
factored out name-legalizer slot from `reserved-words-mixin' into
this class
(unconditional-name-legalizer-mixin): new class; performs
unconditional name legalization
(legalize-name unconditional-name-legalizer-mixin string): new
method; extracted from method for `reserved-words-mixin'?
(reserved-words-mixin): added superclass `name-legalizer-mixin';
removed name-legalizer slot - src/model/language/languages.lisp (language-lisp): added superclass
`name-legalizer-mixin' and :name-legalizer default initarg - src/model/language/package.lisp (package rosetta.model.language):
added used packages rosetta and rosetta.model; added exported
symbols name-legalizer-mixin and unconditional-name-legalizer-mixin - src/backend/emitter-lisp.lisp
(emit/context named-mixin t language-lisp): use `legalize-name' to
generate package and symbol names; create package and/or symbol as
necessary; handle nested toplevel nodes - test/model/data/structure-mixin.lisp
(test structure-mixin-root::parent+acestors+root/smoke): added cases
for nested and packaged structures
(test structure-mixin-root::lookup): whitespace changes - test/model/data/package.lisp (package rosetta.model.data.test):
added exported symbols package/root, package/simple
struct/nested and struct/packaged
(package/root): new parameter; contains an instance of the root
package
(package/simple): new parameter; contains a package object
(struct/nested): new parameter; contains two nested structures
(struct/packaged): new parameter; contains a packaged struct for
naming-related tests - test/model/language/languages.lisp (define-language-test-case):
fixed use class name in test case description
(define-language-test-suite lisp): added test case for method on
`legalize-name' - test/backend/emitter-lisp.lisp
(test backend-emitter-lisp-root::emit-instantiate/smoke): added
cases for struct/nested and struct/packaged
(test backend-emitter-lisp-root::emit-definition/class/smoke):
likewise - rosetta.asd (system rosetta): added dependency of module
model-language on module model
Fixed Lisp name generation in src/backend/emitter-lisp.lisp
fixes #1478
- src/model/language/protocol.lisp (legalize-name t list): new method;
default behavior for qnames - src/model/language/mixins.lisp (name-legalizer-mixin): new class;
factored out name-legalizer slot from `reserved-words-mixin' into
this class
(unconditional-name-legalizer-mixin): new class; performs
unconditional name legalization
(legalize-name unconditional-name-legalizer-mixin string): new
method; extracted from method for `reserved-words-mixin'?
(reserved-words-mixin): added superclass `name-legalizer-mixin';
removed name-legalizer slot - src/model/language/languages.lisp (language-lisp): added superclass
`name-legalizer-mixin' and :name-legalizer default initarg - src/model/language/package.lisp (package rosetta.model.language):
added used packages rosetta and rosetta.model; added exported
symbols name-legalizer-mixin and unconditional-name-legalizer-mixin - src/backend/emitter-lisp.lisp
(emit/context named-mixin t language-lisp): use `legalize-name' to
generate package and symbol names; create package and/or symbol as
necessary; handle nested toplevel nodes - test/model/data/structure-mixin.lisp
(test structure-mixin-root::parent+acestors+root/smoke): added cases
for nested and packaged structures
(test structure-mixin-root::lookup): whitespace changes - test/model/data/package.lisp (package rosetta.model.data.test):
added exported symbols package/root, package/simple
struct/nested and struct/packaged
(package/root): new parameter; contains an instance of the root
package
(package/simple): new parameter; contains a package object
(struct/nested): new parameter; contains two nested structures
(struct/packaged): new parameter; contains a packaged struct for
naming-related tests - test/model/language/languages.lisp (define-language-test-case):
fixed use class name in test case description
(define-language-test-suite lisp): added test case for method on
`legalize-name' - test/backend/emitter-lisp.lisp
(test backend-emitter-lisp-root::emit-instantiate/smoke): added
cases for struct/nested and struct/packaged
(test backend-emitter-lisp-root::emit-definition/class/smoke):
likewise - rosetta.asd (system rosetta): added dependency of module
model-language on module model
History
#1 Updated by J. Moringen about 11 years ago
- Status changed from In Progress to Resolved
- % Done changed from 0 to 100
Applied in changeset rosetta-cl|commit:063d4910bae16c4767d239f0979813467eeccf00.