ceylon-ide-eclipse icon indicating copy to clipboard operation
ceylon-ide-eclipse copied to clipboard

`Quick fix` loop for formal member classes with circular inheritance

Open sgalles opened this issue 10 years ago • 2 comments

Start with this code

interface Foo1{
    shared formal class Bar1() satisfies Foo2{}  
}

interface Foo2{
    shared formal class Bar2() satisfies Foo1{}  
} 

Then add


void run(){
    object foo1 satisfies Foo1{ 
    }
}

Apply the quick fix refine formal member, you get

void run(){
    object foo1 satisfies Foo1{
        shared actual class Bar1()
                 extends super.Bar1() {}

    }
}

And now keep on applying refine formal member you quickly end up with

void run(){
    object foo1 satisfies Foo1{
        shared actual class Bar1()
                 extends super.Bar1() {
            shared actual class Bar2()
                     extends super.Bar2() {
                shared actual class Bar1()
                         extends super.Bar1() {
                    shared actual class Bar2()
                             extends super.Bar2() {
                        shared actual class Bar1()
                                 extends super.Bar1() {}

                    }

                }

            }

        }

    }
}

sgalles avatar Feb 01 '15 15:02 sgalles

@gavinking I think I found a name for this code generation scheme : how about quick fix metaprogramming ? ;)

sgalles avatar Feb 01 '15 20:02 sgalles

haha :-)

gavinking avatar Feb 01 '15 20:02 gavinking