I think”is Array” should be rewritten to Array.isArray() in the compiler.
Some time back, I added some comments to Language.is expressing some possible improvements there. I also highlighted a bug where “new String(“foo”)” new Number(2) and new Boolean(false) will get wrong results. (I don’t know how much something like that is used in the wild…) HTH, Harbs > On Oct 7, 2018, at 9:28 AM, Alex Harui <[email protected]> wrote: > > Ah yes, Class is currently in missing.js in typedefs because so far nobody > needed it at runtime. > > I kind of wish we could avoid creating a dummy Class and having it linked > into every app via Language.is <http://language.is/> even thought it will > only be around 20 bytes. > We could require a bead that injects the definition so folks can opt-in as > needed. > We could have a plugin-scheme in Language-is so you can mixin more tests if > you need it. Right now it tests for Array which might be just-in-case code. > > Thoughts? > -Alex > > On 10/6/18, 9:51 AM, "Carlos Rovira" <[email protected] > <mailto:[email protected]>> wrote: > > Hi Piotr, > > I think the problem is more about what to do with "Class" since is valid in > AS3 and we need proper transpiler to SWF, JS... > Right now in JS Class is not know > > [Error] ReferenceError: Can't find variable: Class= > > As I posted in the first email, I can workaround with > > typeof myFunc === 'function' > > I think this could work for both cases, or maybe the solution you posted (I > didn't try it) > > But the use case comes from trying to compile an existing Flex AS3 library > with Royale, so we'll find "Class" keyword many times out there, so I think > is worth it trying to solve at compiler/Language level. > > Thanks Piotr for the suggestion > > Carlos > > > > El sáb., 6 oct. 2018 a las 15:49, Piotr Zarzycki > (<[email protected]>) > escribió: > >> In the other words you are interested whether there is an object not a >> simple type? That's what I mean. >> >> Why not if (are[0] is object) - does it not cover all of the cases? >> >> >> On Sat, Oct 6, 2018, 2:48 PM Carlos Rovira <[email protected]> >> wrote: >> >>> No, arr[0] has an instance of a custom typed object. >>> >>> El sáb., 6 oct. 2018 a las 10:58, Piotr Zarzycki (< >>> [email protected]>) >>> escribió: >>> >>>> Hi Carlos, >>>> >>>> Are you trying to distinguish something from simple type by that >>> if(arr[0] >>>> is Class) ? By simple type I mean String, Boolean? >>>> >>>> Piotr >>>> >>>> On Sat, Oct 6, 2018, 10:54 AM Carlos Rovira <[email protected]> >>>> wrote: >>>> >>>>> Hi Alex, >>>>> >>>>> I'm very new to Language.as, so I'll try to do my best. >>>>> >>>>> I'm trying to add to Language.as "is" function this: >>>>> >>>>> if(rightOperand === Class) { >>>>> return typeof leftOperand === 'function'; >>>>> } >>>>> >>>>> the test case is : >>>>> >>>>> var arr:Array = [main]; //main is a container declared in MXML, so is >>> not >>>>> class is an instance >>>>> if(arr[0] is Class) >>>>> { >>>>> trace("is Class"); >>>>> } else >>>>> { >>>>> trace("is NOT Class"); // I expect to get this trace >>>>> } >>>>> >>>>> but browser reports: >>>>> >>>>> [Error] ReferenceError: Can't find variable: Class is >> (Language.js:147) >>>>> >>>>> So first point to solve is how to deal with "Class", since is not >>>>> recognized at javascript level. Seems to me that "Class" should be >>> solved >>>>> at compiler level? >>>>> >>>>> Thanks >>>>> >>>>> >>>>> El vie., 5 oct. 2018 a las 23:11, Alex Harui >> (<[email protected] >>>>> ) >>>>> escribió: >>>>> >>>>>> Hi Carlos, >>>>>> >>>>>> Use of "is" is transpiled into a call to Language.is. I think >>>>> Language.is >>>>>> should special case the test for Class. Try updating Language.is >> and >>>> see >>>>>> if that is what you need. >>>>>> >>>>>> -Alex >>>>>> >>>>>> On 10/5/18, 11:13 AM, "Carlos Rovira" <[email protected]> >>>> wrote: >>>>>> >>>>>> Hi, >>>>>> >>>>>> in js, check if something is a class or is an instance is like >>> this >>>>> [1] >>>>>> >>>>>> typeof myFunc === 'function' >>>>>> >>>>>> In Royale since we are using AS3, doing >>>>>> >>>>>> if(something is Class) >>>>>> do this >>>>>> else >>>>>> do that >>>>>> >>>>>> should work either for SWF and for JS, but seems is not the >> case. >>>>>> I must make two codes COMPILE::SWF (with "is Class") and >>>> COMPILE::JS >>>>>> (with >>>>>> typeof ... ==='function') >>>>>> >>>>>> Could we have this abstracted by compiler? >>>>>> >>>>>> Thanks >>>>>> >>>>>> [1] >>>>>> >>>>>> >>>>> >>>> >>> >> https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fstackoverflow.com%2Fquestions%2F405164%2Fbest-method-of-testing-for-a-function-in-javascript&data=02%7C01%7Caharui%40adobe.com%7Cc7db54e53e2f46a7432c08d62babed31%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636744414790781943&sdata=2KNNPEaX%2FIZKqlka8uMpiawbfAQDiRSi99nCnMU64eU%3D&reserved=0 >> >> <https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fstackoverflow.com%2Fquestions%2F405164%2Fbest-method-of-testing-for-a-function-in-javascript&data=02%7C01%7Caharui%40adobe.com%7Cc7db54e53e2f46a7432c08d62babed31%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636744414790781943&sdata=2KNNPEaX%2FIZKqlka8uMpiawbfAQDiRSi99nCnMU64eU%3D&reserved=0> >>>>>> >>>>>> -- >>>>>> Carlos Rovira >>>>>> >>>>>> >>>>> >>>> >>> >> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7Cc7db54e53e2f46a7432c08d62babed31%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636744414790781943&sdata=O3UVXDCt36ga%2Ft9PXPcgQgqykthyeof%2Btrg%2Fu4QHeoU%3D&reserved=0 >> >> <https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7Cc7db54e53e2f46a7432c08d62babed31%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636744414790781943&sdata=O3UVXDCt36ga%2Ft9PXPcgQgqykthyeof%2Btrg%2Fu4QHeoU%3D&reserved=0> >>>>>> >>>>>> >>>>>> >>>>> >>>>> -- >>>>> Carlos Rovira >>>>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7Cc7db54e53e2f46a7432c08d62babed31%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636744414790781943&sdata=O3UVXDCt36ga%2Ft9PXPcgQgqykthyeof%2Btrg%2Fu4QHeoU%3D&reserved=0 >>>>> >>>>> <https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7Cc7db54e53e2f46a7432c08d62babed31%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636744414790781943&sdata=O3UVXDCt36ga%2Ft9PXPcgQgqykthyeof%2Btrg%2Fu4QHeoU%3D&reserved=0> >>>>> >>>> >>> >>> >>> -- >>> Carlos Rovira >>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7Cc7db54e53e2f46a7432c08d62babed31%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636744414790781943&sdata=O3UVXDCt36ga%2Ft9PXPcgQgqykthyeof%2Btrg%2Fu4QHeoU%3D&reserved=0 >>> >>> <https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7Cc7db54e53e2f46a7432c08d62babed31%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636744414790781943&sdata=O3UVXDCt36ga%2Ft9PXPcgQgqykthyeof%2Btrg%2Fu4QHeoU%3D&reserved=0> >>> >> > > > -- > Carlos Rovira > > https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7Cc7db54e53e2f46a7432c08d62babed31%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636744414790781943&sdata=O3UVXDCt36ga%2Ft9PXPcgQgqykthyeof%2Btrg%2Fu4QHeoU%3D&reserved=0 > > <https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7Cc7db54e53e2f46a7432c08d62babed31%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636744414790781943&sdata=O3UVXDCt36ga%2Ft9PXPcgQgqykthyeof%2Btrg%2Fu4QHeoU%3D&reserved=0>
