-
Notifications
You must be signed in to change notification settings - Fork 57
Closed
Description
The following code causes a stack overflow.
For some reason, the super() call in StackOverflowTest.ClassB_Namespace calls itself - but only when a class that extends that class is constructed.
However, there is no issue with "grandchild" classes if they aren't in a namespace.
Tested with brighterscript@0.24.1
Here's some minimalist code that reproduces the issue:
main.bs:
sub Main()
c_notInNamespace = new ClassC_NoNamespace("Clive")
c_notInNamespace.output()
b_inNamespace = new StackOverflowTest.ClassB_Namespace("Betty") ' This line will NOT stack overflow
b_inNamespace.output()
c_inNamespace = new StackOverflowTest.ClassC_Namespace("Charles") ' This line WILL stack overflow
c_inNamespace.output()
end subStackOverflowTest.bs:
namespace StackOverflowTest
class ClassA_Namespace
name = ""
function new(name)
m.name = name
end function
function output()
for each item in m.Items()
print item.key, item.value
end for
end function
end class
class ClassB_Namespace extends ClassA_Namespace
age = 0
function new(name, age = 10)
super(name) ' This line will stack overflow
m.age = age
end function
end class
class ClassC_Namespace extends ClassB_Namespace
color = ""
function new(name, age = 10, color = "")
super(name)
m.color = color
end function
end class
end namespace
class ClassA_NoNamespace
name = ""
function new(name)
m.name = name
end function
function output()
for each item in m.Items()
print item.key, item.value
end for
end function
end class
class ClassB_NoNamespace extends ClassA_NoNamespace
age = 0
function new(name, age = 10)
super(name)
m.age = age
end function
end class
class ClassC_NoNamespace extends ClassB_NoNamespace
color = ""
function new(name, age = 10, color = "")
super(name)
m.color = color
end function
end classReactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels