Skip to content

Are we getting the fields in metaclasses wrong? #63

Description

@smarr

The following program shows inconsistent output for different SOM implementations, and SOM++ may have unexpected fields:

Haoran = (

  answersForHaoran: aClass = (
    aClass name println.
    '  superclass: \'' print.
    aClass superclass print. '\'' println.
    '  class is: \'' print.
    aClass class print. '\'' println.
    '  SOM source-defined fields: '  print. aClass fields length println.
    aClass fields do: [ :fieldName |
      '    ' print. fieldName println.
    ].
    '  methods: ' print. aClass methods length println.
    aClass methods do: [ :methodName |
      '    ' print. methodName println.
    ].

    '  isClass: ' print. aClass isClass println.
    '  isMetaClass: ' print. aClass isMetaClass println.
    '' println.
    '' println.
  )

  run = (
    self answersForHaoran: Object.

    self answersForHaoran: Class.

    self answersForHaoran: Metaclass.

    self answersForHaoran: Metaclass class.

    self answersForHaoran: Metaclass class class.

    self answersForHaoran: Class class.

    self answersForHaoran: Class class class.

    self answersForHaoran: Object class.

    self answersForHaoran: Object class class.
  )
)

core-lib.patch
pysom.txt
som-java.txt
sompp.txt
trufflesom.txt

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions