QualifiedName.st
author Jan Vrany <jan.vrany@labware.com>
Tue, 01 Jun 2021 20:19:13 +0100
branchjv
changeset 25424 51bd8a6b196f
parent 18105 3a3a3e0ac47f
permissions -rw-r--r--
Cherry-picked `Context` cherry-picked Context.st from a6b6dda4caff: * 4aaf30c174e9: #DOCUMENTATION by cg, Claus Gittinger <cg@exept.de> * c67311afcc6c: #OTHER by cg, Claus Gittinger <cg@exept.de> * 883f79e7b2a6: #FEATURE by cg, Claus Gittinger <cg@exept.de> * 716f3fbb09e9: Don't mark contexts with `CATCHMARK`, Jan Vrany <jan.vrany@fit.cvut.cz> * cff24fa817b0: #REFACTORING by stefan, Stefan Vogel <sv@exept.de> * 521f0d837330: #UI_ENHANCEMENT by cg, Claus Gittinger <cg@exept.de> * bf1118f0fcca: #UI_ENHANCEMENT by cg, Claus Gittinger <cg@exept.de> * e587cdd22868: #BUGFIX by cg, Claus Gittinger <cg@exept.de> * fe9f9487a3ed: #DOCUMENTATION by cg, Claus Gittinger <cg@exept.de> * d5b781899274: #BUGFIX by cg, Claus Gittinger <cg@exept.de> * 8258751a7465: #FEATURE by cg, Claus Gittinger <cg@exept.de> * 40173e082cbc: Copyright updates, Jan Vrany <jan.vrany@fit.cvut.cz> * 6db5c28207d5: #UI_ENHANCEMENT by cg, Claus Gittinger <cg@exept.de> * 871ea64fd5dc: #FEATURE by cg, Claus Gittinger <cg@exept.de> * 4b544a108e4e: #DOCUMENTATION by cg, Claus Gittinger <cg@exept.de> * 9a8d8399e566: #FEATURE by cgexept.de, Claus Gittinger <cg@exept.de> * 170b00be0103: #BUGFIX by stefan, Stefan Vogel <sv@exept.de> * a6c73965eae8: #FEATURE by cg, Claus Gittinger <cg@exept.de> * ce2a0e462ff0: #FEATURE by cg, Claus Gittinger <cg@exept.de> * 46a260a9ca92: #FEATURE by cg, Claus Gittinger <cg@exept.de> * 46cab49167fb: #UI_ENHANCEMENT by exept, Claus Gittinger <cg@exept.de> * 7d52dfd3997d: #DOCUMENTATION by exept, Claus Gittinger <cg@exept.de> * c52eeea62763: Fix `Context >> argAndVarNames` in cases when debug info is not available, Jan Vrany <jan.vrany@labware.com> * b5d6963fe4a9: Backed out changeset c52eeea62763, Jan Vrany <jan.vrany@labware.com> * 6fd3896f8703: #FEATURE by exept, Claus Gittinger <cg@exept.de> * b530ee616256: #REFACTORING by cg, Claus Gittinger <cg@exept.de> * ef9b481d7498: #FEATURE by cg, Claus Gittinger <cg@exept.de> * ea663b72bd51: #UI_ENHANCEMENT by cg, Claus Gittinger <cg@exept.de> * 6179572a733c: #FEATURE by exept, Claus Gittinger <cg@exept.de> * 84155b1b6622: #DOCUMENTATION by exept, Claus Gittinger <cg@exept.de> * 37d06602d856: *** empty log message ***, Claus Gittinger <cg@exept.de> * f927b9022fea: *** empty log message ***, Claus Gittinger <cg@exept.de> * 427d3be62d97: #UI_ENHANCEMENT by exept, Claus Gittinger <cg@exept.de>

"{ Package: '__NoProject__' }"

Object subclass:#QualifiedName
	instanceVariableNames:'pathString'
	classVariableNames:''
	poolDictionaries:''
	category:'Kernel-Support'
!

!QualifiedName class methodsFor:'documentation'!

documentation
"
    some mimicri, to allow filein of visualWorks code which uses qualified names
"
! !

!QualifiedName class methodsFor:'instance creation'!

for:aStringOrSymbol
    ^ self new name:aStringOrSymbol


!

makeUnambiguous
    ^ self
!

pathString:aPathString
    ^ self new pathString:aPathString
! !

!QualifiedName methodsFor:'accessing'!

asString
    ^ pathString


!

comment:aString
    "empty for now"
!

name:aStringOrSymbol
    pathString := aStringOrSymbol asSymbol

!

pathString
    "return the value of the instance variable 'pathString' (automatically generated)"

    ^ pathString
!

pathString:something
    "set the value of the instance variable 'pathString' (automatically generated)"

    pathString := something.
! !

!QualifiedName methodsFor:'conditional execution'!

value
    "return my binding value, if unbound, return nil"

    ^ self valueOrDo:[]
!

valueOrDo:aBlock
    "return my binding value, if unbound, return the result from evaluating aBlock"

    |ns path|

    path := pathString asCollectionOfSubstringsSeparatedBy:$..
    ((path size > 0) and:[path first = 'Core']) ifTrue:[
        path := path copyFrom:2
    ].
    ns := Smalltalk.
    path do:[:component |
        ns := ns at:component asSymbol ifAbsent:[ ^ aBlock value ].
    ].
    ^ ns
! !

!QualifiedName methodsFor:'defining'!

defineClass: name superclass: superclass
                indexedType: indexed
                private: private
                instanceVariableNames: instVars
                classInstanceVariableNames: classInstVars
                imports: imports
                category: category
                attributes: annotations

    |sc|

    sc := superclass value.
    sc isNil ifTrue:[
self halt.
    ].
self halt.

!

defineNameSpace: name private: private imports: imports category: category attributes: annotations
    "klduge for now"

    pathString = 'Smalltalk' ifTrue:[
        NameSpace name:name asSymbol.
    ] ifFalse:[
    self halt.
    ].

! !

!QualifiedName methodsFor:'dummy for now'!

makeUnambiguous
    ^ self


! !

!QualifiedName class methodsFor:'documentation'!

version
    ^ '$Header: /cvs/stx/stx/libbasic/QualifiedName.st,v 1.3 2013-10-27 10:14:09 cg Exp $'
!

version_CVS
    ^ '$Header: /cvs/stx/stx/libbasic/QualifiedName.st,v 1.3 2013-10-27 10:14:09 cg Exp $'
! !