eclipse-archived / ceylon

The Ceylon compiler, language module, and command line tools
http://ceylon-lang.org
Apache License 2.0
398 stars 62 forks source link

Compiler performance with long tuples and mixed element types #7387

Open lgarin opened 6 years ago

lgarin commented 6 years ago

The compiler seems to hang with tuples of 26 elements where the last element type differs from the previous elements type.

class HangCompiler() {

    shared [Integer+] fn() => [0];

    shared void testIntegerSequenceWithFloat() {
        value seq = fn();
        assert (seq != [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,0.0]);
    }
}

Using a tuple with less integer elements preceding the last float element allows the compiler to produce the module but it may take several minutes for this simple example.

Note that using a second sequence produced by a function is important in order to reproduce this performance problem.

This problem occurs with the version 1.3.3 0d594b3 (Contents May Differ).