Is it possible to call classmethod of a current class from method generator?

Here's my code (download):

Class Utils.Generators [ Abstract ]
{

ClassMethod B()
{
    s ^a = 1
}

ClassMethod A() [ CodeMode = objectgenerator, GenerateAfter = B, PlaceAfter = B ]
{
    k ^a
    do ..B()
}

Now, obviously for it to work I need method B compiled and ready to use before compiling method A().

I test it with the following code:

do $system.OBJ.UnCompile("Utils.Generator")
do $system.OBJ.Compile("Utils.Generator")

Yet, I receive the following compilation error:

Compilation started on 04/10/2016 18:39:04 with qualifiers ''
Compiling class Utils.Generator
ERROR #5002: Cache error: <CLASS DOES NOT EXIST>A+2^Utils.Generator.G1 *Utils.Generator
  > ERROR #5490: Error running generator for method 'A:Utils.Generator'
ERROR: Utils.Generator.G1.int(A+2) : <CLASS DOES NOT EXIST>
ERROR: Utils.Generator.cls(A) of generated code
    > ERROR #5030: An error occurred while compiling class 'Utils.Generator'
Compiling routine Utils.Generator.1
Detected 1 errors during compilation in 0.006s.

Any way I can solve it (besides moving B method into another class and specifying CompileAfter and DependsOn  class keywords)?

Download code.

  • 0
  • 0
  • 479
  • 1
  • 1

Answers

This is not possible, as you suggest you should put the methods you wish to call at generator time in another class and make sure you create a dependency with this other class using the 'DependsOn' keyword to make sure we fully compile this other class first.