Feature #1478

Generate proper names for emitted Lisp objects

Added by J. Moringen about 11 years ago. Updated about 11 years ago.

Status:ResolvedStart date:04/25/2013
Priority:NormalDue 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

Revision 063d4910
Added by J. Moringen about 11 years ago

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

Revision 2bb7fd46
Added by J. Moringen almost 11 years ago

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

Revision 7a5d0b17
Added by J. Moringen almost 11 years ago

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.

Also available in: Atom PDF