Skip to content

Three levels of subclassing causes stack overflow in constructor #12

@drauschenbach

Description

@drauschenbach

Busted-based unit test:

describe('microlight.class', function()
  it('Three levels of subclassing works', function()

    local microlight = require 'ml'
    local A = microlight.class()
    function A:_init()
      self.me='a'
    end

    local B = microlight.class(A)
    function B:_init()
      self:super()
      self.me='b'
    end

    local C = microlight.class(B)
    function C:_init()
      self:super()
      self.me='c'
    end
    
    local a = A()
    local b = B()
    local c = C()
    
    assert.equals('a', a.me)
    assert.equals('b', b.me)
    assert.equals('c', c.me)
  end)
  
end)

Output:

0 successes / 0 failures / 1 error / 0 pending : 0.211254 seconds

Error -> spec/stuart/class_spec.lua @ 117
class Three levels of subclassing works in microlight
spec/stuart/class_spec.lua:125: stack overflow

stack traceback:
        spec/stuart/class_spec.lua:125: in function 'super'
        spec/stuart/class_spec.lua:125: in function 'super'
        spec/stuart/class_spec.lua:125: in function 'super'
        spec/stuart/class_spec.lua:125: in function 'super'
        spec/stuart/class_spec.lua:125: in function 'super'
        spec/stuart/class_spec.lua:125: in function 'super'
        spec/stuart/class_spec.lua:125: in function 'super'
        spec/stuart/class_spec.lua:125: in function 'super'
        ...
        /usr/local/share/lua/5.2/busted/core.lua:312: in function 'execute'
        /usr/local/share/lua/5.2/busted/block.lua:155: in function 'execute'
        /usr/local/share/lua/5.2/busted/init.lua:7: in function 'executor'
        /usr/local/share/lua/5.2/busted/core.lua:312: in function </usr/local/share/lua/5.2/busted/core.lua:312>

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions