Thanks to visit codestin.com
Credit goes to github.com

Skip to content

hetu format producing broken code #54

@juh9870

Description

@juh9870
Name Value
Dart version Dart SDK version: 2.16.1 (stable) (Tue Feb 8 12:02:33 2022 +0100) on "windows_x64"
hetu_script version 0.3.12
Command hetu format

Code before formatting:

namespace $Eval {
    var cache = Map();
    var evalResult;
}

fun evalInContext(code: str, context: Map) -> any {
    var str = "$Eval.evalResult = (context) {\n";
    for(var k in context.keys){
        str += "\tvar ${k} = context['${k}'];\n";
    }
    str += "\treturn (${code});\n";
    str += "}";
    var func = $Eval.cache[str];
    if(func == null){
        print(str);
        eval(str);
        func = $Eval.evalResult;
        $Eval.cache[str] = func;
        $Eval.evalResult = null;
    }
    return func(context);
}

print(evalInContext("a + b", {a:1,b:2}));
print(evalInContext("a + b", {a:2,b:3}));
print(evalInContext("a + b", {a:3,b:4}));
print(evalInContext("a + b + c", {a:3,b:4, c:6}));
print(evalInContext("a + b + c", {a:3,b:4}));

Code after formatting:

namespace $Eval  {
  var cache = Map();
  var evalResult;
}
fun evalInContext(code: Instance of 'IdentifierExpr', context: Instance of 'IdentifierExpr') -> Instance of 'IdentifierExpr'  {
  var str = $Eval.evalResult = (context) {\n;
  for (var k in context.keys)  {
    str = str + '\tvar ${k} = context['${k}'];\n'
  }
  str = str + '\treturn (${code});\n'
  str = str + }
  var func = $Eval.cache[str];
  if (func == null)  {
    print(str)
    eval(str)
    func = $Eval.evalResult
    $Eval.cache[str] = func
    $Eval.evalResult = null
  }
  return func(context);
}

print(evalInContext(a + b, {
a: 1,
b: 2
}))
print(evalInContext(a + b, {
a: 2,
b: 3
}))
print(evalInContext(a + b, {
a: 3,
b: 4
}))
print(evalInContext(a + b + c, {
a: 3,
b: 4,
c: 6
}))
print(evalInContext(a + b + c, {
a: 3,
b: 4
}))

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions