Closed jvasileff closed 8 years ago
In some cases when satisfying Iterable and Sequence, refinedDeclaration does not yield the topmost declaration.
Iterable
Sequence
refinedDeclaration
To reproduce, alter com/redhat/ceylon/model/typechecker/model/Declaration.java to have:
com/redhat/ceylon/model/typechecker/model/Declaration.java
public Declaration getRefinedDeclaration() { if (actualCompleter != null) { completeActual(); } if (! refinedDeclaration.equals(refinedDeclaration.refinedDeclaration)) { System.out.println("**** Ooops:"); System.out.println(" " + this); System.out.println(" " + refinedDeclaration); System.out.println(" " + refinedDeclaration.refinedDeclaration); } return refinedDeclaration; }
and run ant clean publish in ceylon-dist.
ant clean publish
ceylon-dist
Partial output:
ceylon.language.java: [ceylon-compile] **** Ooops: [ceylon-compile] value ArraySequence<Element>.size => Integer [ceylon-compile] value Sequence<Element>.size => Integer [ceylon-compile] value Iterable<Element,Absent>.size => Integer [ceylon-compile] **** Ooops: [ceylon-compile] value ArraySequence<Element>.size => Integer [ceylon-compile] value Sequence<Element>.size => Integer [ceylon-compile] value Iterable<Element,Absent>.size => Integer [ceylon-compile] **** Ooops: [ceylon-compile] value ArraySequence<Element>.rest => Element[] [ceylon-compile] value Sequence<Element>.rest => Element[] [ceylon-compile] value Iterable<Element,Absent>.rest => {Element*} [ceylon-compile] **** Ooops: [ceylon-compile] value ArraySequence<Element>.rest => Element[] [ceylon-compile] value Sequence<Element>.rest => Element[] [ceylon-compile] value Iterable<Element,Absent>.rest => {Element*} [ceylon-compile] **** Ooops: [ceylon-compile] value anonymous#9.string => String [ceylon-compile] value Iterable<Element,Absent>.string => String [ceylon-compile] value Object.string => String [ceylon-compile] **** Ooops: [ceylon-compile] value anonymous#9.string => String [ceylon-compile] value Iterable<Element,Absent>.string => String [ceylon-compile] value Object.string => String [ceylon-compile] **** Ooops: [ceylon-compile] value Iterable<Element,Absent>.repeat.anonymous#16.string => String [ceylon-compile] value Iterable<Element,Absent>.string => String [ceylon-compile] value Object.string => String [ceylon-compile] **** Ooops: [ceylon-compile] value Iterable<Element,Absent>.repeat.anonymous#16.string => String [ceylon-compile] value Iterable<Element,Absent>.string => String [ceylon-compile] value Object.string => String [ceylon-compile] **** Ooops: [ceylon-compile] value anonymous#17.string => String [ceylon-compile] value Iterable<Element,Absent>.string => String [ceylon-compile] value Object.string => String [ceylon-compile] **** Ooops: [ceylon-compile] value anonymous#17.string => String [ceylon-compile] value Iterable<Element,Absent>.string => String [ceylon-compile] value Object.string => String
Edit: changed != to ! x.equals(y)
!=
! x.equals(y)
@jvasileff thanks so much for noticing and reporting this one—it could have gone under the radar causing tiny subtle problems for ages w/o us noticing...
In some cases when satisfying
Iterable
andSequence
,refinedDeclaration
does not yield the topmost declaration.To reproduce, alter
com/redhat/ceylon/model/typechecker/model/Declaration.java
to have:and run
ant clean publish
inceylon-dist
.Partial output:
Edit: changed
!=
to! x.equals(y)