Ejemplo n.º 1
0
    public override void CodeGen(OutputContext output)
    {
        string GetName(AstSymbol symbol)
        {
            return(symbol.Thedef?.MangledName ?? symbol.Thedef?.Name ?? symbol.Name);
        }

        var allowShortHand = output.Options.Ecma >= 6;
        var keyString      = Key switch
        {
            AstString str => str.Value,
            AstNumber num => num.Value.ToString("R", CultureInfo.InvariantCulture),
            AstSymbolRef _ => null,
            AstSymbol key => GetName(key),
            _ => null
        };

        if (allowShortHand &&
            Value is AstSymbol value && keyString != null &&
            GetName(value) == keyString &&
            OutputContext.IsIdentifierString(keyString) &&
            OutputContext.IsIdentifier(keyString)
            )
        {
            output.PrintPropertyName(keyString);
        }
Ejemplo n.º 2
0
        public void VisitNumber(AstNumber ast)
        {
            switch (ast)
            {
            case AstIntNumber i:
                Assert.IsType <AstIntNumber>(this.expected);
                var expectedIntAst = (AstIntNumber)this.expected;
                Assert.Equal(expectedIntAst.Value, i.Value);
                break;

            case AstDoubleNumber d:
                Assert.IsType <AstDoubleNumber>(this.expected);
                var expectedDoubleAst = (AstDoubleNumber)this.expected;
                Assert.Equal(expectedDoubleAst.Value, d.Value);
                break;
            }
        }
Ejemplo n.º 3
0
    protected void PrintGetterSetter(OutputContext output, string?type, bool @static)
    {
        if (@static)
        {
            output.Print("static");
            output.Space();
        }

        if (type != null)
        {
            output.Print(type);
            output.Space();
        }

        var keyString = Key switch
        {
            AstString str => str.Value,
            AstNumber num => num.Value.ToString("R", CultureInfo.InvariantCulture),
            AstSymbolRef => null,
            AstSymbol key => key.Name,
            _ => null
        };

        if (keyString != null)
        {
            output.PrintPropertyName(keyString);
        }
        else
        {
            output.Print("[");
            Key.Print(output);
            output.Print("]");
        }

        ((AstLambda)Value).DoPrint(output, true);
    }
}
Ejemplo n.º 4
0
 public void VisitNumber(AstNumber ast) => IncrementCallCount(nameof(VisitNumber));
Ejemplo n.º 5
0
        public static TrsNumber Convert(this AstNumber astIn)
        {
            var token = astIn.Number;

            return(new TrsNumber(token.TokenString, astIn));
        }
Ejemplo n.º 6
0
 public TrsNumber(string value, AstNumber source)
 {
     AstSource = source;
     Value     = value;
 }