mirror of
https://github.com/google/go-jsonnet.git
synced 2025-09-30 18:01:03 +02:00
address jbeda's comments
This commit is contained in:
parent
09c7c8c7c0
commit
c5225a1b3a
36
desugarer.go
36
desugarer.go
@ -179,7 +179,7 @@ func desugarFields(location LocationRange, fields *astObjectFields, objLevel int
|
|||||||
field.kind = astObjectFieldExpr
|
field.kind = astObjectFieldExpr
|
||||||
|
|
||||||
case astObjectLocal:
|
case astObjectLocal:
|
||||||
return fmt.Errorf("INTERNAL ERROR: Locals should be removed by now.")
|
return fmt.Errorf("INTERNAL ERROR: Locals should be removed by now")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -199,34 +199,32 @@ func desugarFields(location LocationRange, fields *astObjectFields, objLevel int
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func desugar(astPtr *astNode, objLevel int) error {
|
func desugar(astPtr *astNode, objLevel int) (err error) {
|
||||||
ast := *astPtr
|
ast := *astPtr
|
||||||
// TODO(dcunnin): Remove all uses of unimplErr.
|
// TODO(dcunnin): Remove all uses of unimplErr.
|
||||||
unimplErr := makeStaticError(fmt.Sprintf("Desugarer does not yet implement ast: %s", reflect.TypeOf(ast)), *ast.Loc())
|
unimplErr := makeStaticError(fmt.Sprintf("Desugarer does not yet implement ast: %s", reflect.TypeOf(ast)), *ast.Loc())
|
||||||
|
|
||||||
var err error // Make all recursive calls of the form err = desugar, rather than some being err := desugar
|
|
||||||
|
|
||||||
switch ast := ast.(type) {
|
switch ast := ast.(type) {
|
||||||
case *astApply:
|
case *astApply:
|
||||||
err = desugar(&ast.target, objLevel)
|
err = desugar(&ast.target, objLevel)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return
|
||||||
}
|
}
|
||||||
for i := range ast.arguments {
|
for i := range ast.arguments {
|
||||||
err = desugar(&ast.arguments[i], objLevel)
|
err = desugar(&ast.arguments[i], objLevel)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
case *astApplyBrace:
|
case *astApplyBrace:
|
||||||
err = desugar(&ast.left, objLevel)
|
err = desugar(&ast.left, objLevel)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return
|
||||||
}
|
}
|
||||||
err = desugar(&ast.right, objLevel)
|
err = desugar(&ast.right, objLevel)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return
|
||||||
}
|
}
|
||||||
*astPtr = &astBinary{
|
*astPtr = &astBinary{
|
||||||
astNodeBase: ast.astNodeBase,
|
astNodeBase: ast.astNodeBase,
|
||||||
@ -239,7 +237,7 @@ func desugar(astPtr *astNode, objLevel int) error {
|
|||||||
for i := range ast.elements {
|
for i := range ast.elements {
|
||||||
err = desugar(&ast.elements[i], objLevel)
|
err = desugar(&ast.elements[i], objLevel)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -252,11 +250,11 @@ func desugar(astPtr *astNode, objLevel int) error {
|
|||||||
case *astBinary:
|
case *astBinary:
|
||||||
err = desugar(&ast.left, objLevel)
|
err = desugar(&ast.left, objLevel)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return
|
||||||
}
|
}
|
||||||
err = desugar(&ast.right, objLevel)
|
err = desugar(&ast.right, objLevel)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return
|
||||||
}
|
}
|
||||||
// TODO(dcunnin): Need to handle bopPercent, bopManifestUnequal, bopManifestEqual
|
// TODO(dcunnin): Need to handle bopPercent, bopManifestUnequal, bopManifestEqual
|
||||||
|
|
||||||
@ -266,11 +264,11 @@ func desugar(astPtr *astNode, objLevel int) error {
|
|||||||
case *astConditional:
|
case *astConditional:
|
||||||
err = desugar(&ast.cond, objLevel)
|
err = desugar(&ast.cond, objLevel)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return
|
||||||
}
|
}
|
||||||
err = desugar(&ast.branchTrue, objLevel)
|
err = desugar(&ast.branchTrue, objLevel)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return
|
||||||
}
|
}
|
||||||
if ast.branchFalse != nil {
|
if ast.branchFalse != nil {
|
||||||
ast.branchFalse = &astLiteralNull{}
|
ast.branchFalse = &astLiteralNull{}
|
||||||
@ -285,13 +283,13 @@ func desugar(astPtr *astNode, objLevel int) error {
|
|||||||
case *astError:
|
case *astError:
|
||||||
err = desugar(&ast.expr, objLevel)
|
err = desugar(&ast.expr, objLevel)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
case *astFunction:
|
case *astFunction:
|
||||||
err = desugar(&ast.body, objLevel)
|
err = desugar(&ast.body, objLevel)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
case *astImport:
|
case *astImport:
|
||||||
@ -307,12 +305,12 @@ func desugar(astPtr *astNode, objLevel int) error {
|
|||||||
for _, bind := range ast.binds {
|
for _, bind := range ast.binds {
|
||||||
err = desugar(&bind.body, objLevel)
|
err = desugar(&bind.body, objLevel)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
err = desugar(&ast.body, objLevel)
|
err = desugar(&ast.body, objLevel)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return
|
||||||
}
|
}
|
||||||
// TODO(dcunnin): Desugar local functions
|
// TODO(dcunnin): Desugar local functions
|
||||||
|
|
||||||
@ -343,7 +341,7 @@ func desugar(astPtr *astNode, objLevel int) error {
|
|||||||
|
|
||||||
err = desugarFields(*ast.Loc(), &ast.fields, objLevel)
|
err = desugarFields(*ast.Loc(), &ast.fields, objLevel)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
var newFields astDesugaredObjectFields
|
var newFields astDesugaredObjectFields
|
||||||
@ -379,7 +377,7 @@ func desugar(astPtr *astNode, objLevel int) error {
|
|||||||
case *astUnary:
|
case *astUnary:
|
||||||
err = desugar(&ast.expr, objLevel)
|
err = desugar(&ast.expr, objLevel)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
case *astVar:
|
case *astVar:
|
||||||
|
@ -379,6 +379,7 @@ func (i *interpreter) evaluate(a astNode) (value, error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
// TODO(dcunnin): Check the type properly. The following code just panics.
|
||||||
leftNum := leftVal.(*valueNumber).value
|
leftNum := leftVal.(*valueNumber).value
|
||||||
rightVal, err := i.evaluate(ast.right)
|
rightVal, err := i.evaluate(ast.right)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user