Is cross-modlue inheritence not working?

I have a class B in module B that I'd like to inherit from class A in module A. Trying this, however, it doesn't seem to work.

Due to the dependency ordering bug (known issue), I had to name module A, ZA, but that still doesn't fix it.

I end up with

BUILD: com.garmin.monkeybrains.asm.AssemblerException: Cannot find label globals_globals_ZA
BUILD: at com.garmin.monkeybrains.asm.values.ClassdefValue.resolve(ClassdefValue.java:42)
BUILD: at com.garmin.monkeybrains.asm.Fielddef.resolve(Fielddef.java:69)
BUILD: at com.garmin.monkeybrains.asm.Classdef.resolve(Classdef.java:114)
BUILD: at com.garmin.monkeybrains.asm.Assembler.resolve(Assembler.java:1077)
BUILD: at com.garmin.monkeybrains.asm.Assembler.resolve(Assembler.java:864)
BUILD: at com.garmin.monkeybrains.asm.Assembler.assemble(Assembler.java:601)
BUILD: at com.garmin.monkeybrains.compiler.Compiler.assemble(Compiler.java:667)
BUILD: at com.garmin.monkeybrains.Monkeybrains.runCompiler(Monkeybrains.java:709)
BUILD: at com.garmin.monkeybrains.Monkeybrains.compileApplication(Monkeybrains.java:513)
BUILD: at com.garmin.monkeybrains.Monkeybrains.main(Monkeybrains.java:956)
BUILD: ERROR: Unknown:0: Cannot find label globals_globals_ZA


Has anybody else gotten this to work properly?
  • Could you post a small sample that illustrates the error?
  • Former Member
    Former Member
    I am having a similar issue. Was this issue resolved over PM?
  • I run into the same issue

    When parent class is defined in a separate file, you can get different error depending on what file compiler decides to compile first.

    BUILD: ERROR: <file path>.mc:<line number>: Unable to find parent class of <module name>.<parent class name> for class <child class name>


    Then if you copy the parent class definition to the file with child class like this:

    using Toybox.WatchUi as Ui;
    using Framework as Fw;

    module Framework {

    class SuperView extends Ui.View {
    }

    }

    class SomeView extends Fw.SuperView {
    }


    It does not work either:

    BUILD: com.garmin.monkeybrains.asm.AssemblerException: Cannot find label globals_globals_Framework_SuperView
    BUILD: at com.garmin.monkeybrains.asm.values.ClassdefValue.resolve(ClassdefValue.java:42)
    BUILD: at com.garmin.monkeybrains.asm.Fielddef.resolve(Fielddef.java:69)
    BUILD: at com.garmin.monkeybrains.asm.Classdef.resolve(Classdef.java:114)
    BUILD: at com.garmin.monkeybrains.asm.Assembler.resolve(Assembler.java:1078)
    BUILD: at com.garmin.monkeybrains.asm.Assembler.resolve(Assembler.java:865)
    BUILD: at com.garmin.monkeybrains.asm.Assembler.assemble(Assembler.java:601)
    BUILD: at com.garmin.monkeybrains.compiler.Compiler.assemble(Compiler.java:677)
    BUILD: at com.garmin.monkeybrains.Monkeybrains.runCompiler(Monkeybrains.java:748)
    BUILD: at com.garmin.monkeybrains.Monkeybrains.compileApplication(Monkeybrains.java:546)
    BUILD: at com.garmin.monkeybrains.Monkeybrains.main(Monkeybrains.java:1030)
    BUILD: ERROR: unknown:0: Cannot find label globals_globals_Framework_SuperView


    Only when both classes are in the same file and parent one is not it a separate module it works. Any ideas???
  • The file compilation order error is known and it is on our list to fix. For your second issue, if you extend Framework.SuperView it will work. I'm not sure why the using isn't working in this case and I'll make sure we investigate it.