The isCase operator is documented under operator overloading: https://docs.groovy-lang.org/latest/html/documentation/#_operator_overloading
With further clarification here: https://docs.groovy-lang.org/latest/html/groovy-jdk/java/lang/Class.html#isCase(java.lang.Object) But yeah, it would be better if the first bullet point in the switch_case explanations was clarified too. Paul. <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail> Virus-free.www.avast.com <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail> <#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2> On Mon, Jul 1, 2024 at 7:15 AM OCsite <o...@ocs.cz> wrote: > > Paul, > > On 30. 6. 2024, at 23:03, Paul King <pa...@asert.com.au> wrote: > For instances, instanceof is applied. For classes, isAssignableFrom is > applied. > > > I see, thanks! > > Is that documented somewhere? Perhaps I'm just blind, but I can't see it here. > > All the best, > OC > > You can always check by looking at isCase. > > assert String.isCase('foo') > assert !Class.isCase(String) > assert CharSequence.isCase(String) > assert Object.isCase(Class) > > assert switch(String) { > case Class -> false > case CharSequence -> true > } > > <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail> > Virus-free.www.avast.com > <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail> > <#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2> > > On Mon, Jul 1, 2024 at 6:52 AM OCsite <o...@ocs.cz> wrote: > > > Christopher, > > On 30. 6. 2024, at 22:42, Christopher Smith <chry...@gmail.com> wrote: > > You're comparing `class java.lang.String` and `class java.lang.Class`. > > No, I'm not. > > Which rule in the docs leads you to expect this to be truthy? > > The very first documented one, namely > > Class case values match if the switch value is an instance of the class > > Each class is an instance of java.lang.Class (as actually proves the second > case which checks it explicitly through a closure; since it is there, I > thought there's no need to elaborate). > > Thanks and all the best, > OC > > > On Sun, Jun 30, 2024, 13:17 o...@ocs.cz <o...@ocs.cz> wrote: > > > Hi there, > > is this the intended behaviour? > > === > groovy:000> switch (String) { case Class: println "C"; break; case {it > instanceof Class}: println "CC" } > CC > ===> null > groovy:000> > === > > Based on the switch documented semantic I would presume "C" should be printed > out, not "CC"? > > Thanks and all the best, > OC > > >