Added -Any suffix to appropriate generation routines
This commit is contained in:
parent
e188b2f349
commit
64d246a997
@ -41,7 +41,7 @@ func (this *generator) generateExpressionMode (
|
|||||||
) {
|
) {
|
||||||
switch mode {
|
switch mode {
|
||||||
case ResultModeAny:
|
case ResultModeAny:
|
||||||
return this.generateExpression(expression)
|
return this.generateExpressionAny(expression)
|
||||||
case ResultModeVal:
|
case ResultModeVal:
|
||||||
val, err := this.generateExpressionVal(expression)
|
val, err := this.generateExpressionVal(expression)
|
||||||
return val, false, err
|
return val, false, err
|
||||||
@ -56,7 +56,7 @@ func (this *generator) generateExpressionMode (
|
|||||||
// representing the result, or a register containing the location of the result,
|
// representing the result, or a register containing the location of the result,
|
||||||
// whichever will generate the least IR. In the latter case, the boolean
|
// whichever will generate the least IR. In the latter case, the boolean
|
||||||
// "location" will be true.
|
// "location" will be true.
|
||||||
func (this *generator) generateExpression (expression entity.Expression) (register llvm.Value, location bool, err error) {
|
func (this *generator) generateExpressionAny (expression entity.Expression) (register llvm.Value, location bool, err error) {
|
||||||
// TODO: some of these could stand to know that they have a choice in
|
// TODO: some of these could stand to know that they have a choice in
|
||||||
// the matter.
|
// the matter.
|
||||||
|
|
||||||
@ -245,7 +245,7 @@ func (this *generator) generateStatementMode (
|
|||||||
) {
|
) {
|
||||||
switch mode {
|
switch mode {
|
||||||
case ResultModeAny:
|
case ResultModeAny:
|
||||||
return this.generateStatement(statement)
|
return this.generateStatementAny(statement)
|
||||||
case ResultModeVal:
|
case ResultModeVal:
|
||||||
val, err := this.generateStatementVal(statement)
|
val, err := this.generateStatementVal(statement)
|
||||||
return val, false, err
|
return val, false, err
|
||||||
@ -256,14 +256,14 @@ func (this *generator) generateStatementMode (
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (this *generator) generateStatement (statement entity.Statement) (register llvm.Value, location bool, err error) {
|
func (this *generator) generateStatementAny (statement entity.Statement) (register llvm.Value, location bool, err error) {
|
||||||
switch statement := statement.(type) {
|
switch statement := statement.(type) {
|
||||||
case *entity.Assignment:
|
case *entity.Assignment:
|
||||||
_, err := this.generateAssignment(statement)
|
_, err := this.generateAssignment(statement)
|
||||||
return nil, false, err
|
return nil, false, err
|
||||||
|
|
||||||
case entity.Expression:
|
case entity.Expression:
|
||||||
return this.generateExpression(statement)
|
return this.generateExpressionAny(statement)
|
||||||
default:
|
default:
|
||||||
panic(fmt.Sprintf (
|
panic(fmt.Sprintf (
|
||||||
"BUG: generator doesnt know about statement %v, ty: %T",
|
"BUG: generator doesnt know about statement %v, ty: %T",
|
||||||
|
@ -10,7 +10,7 @@ func (this *generator) generateBlock (block *entity.Block, mode ResultMode) (llv
|
|||||||
|
|
||||||
lastIndex := len(block.Steps) - 1
|
lastIndex := len(block.Steps) - 1
|
||||||
for _, step := range block.Steps[:lastIndex] {
|
for _, step := range block.Steps[:lastIndex] {
|
||||||
_, _, err := this.generateStatement(step)
|
_, _, err := this.generateStatementAny(step)
|
||||||
if err != nil { return nil, false, err }
|
if err != nil { return nil, false, err }
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -24,7 +24,7 @@ func (this *generator) generateBreak (brk *entity.Break) (llvm.Value, error) {
|
|||||||
var err error
|
var err error
|
||||||
switch loopEntry.mode {
|
switch loopEntry.mode {
|
||||||
case ResultModeAny:
|
case ResultModeAny:
|
||||||
value, loopEntry.loc, err = this.generateStatement(brk.Value)
|
value, loopEntry.loc, err = this.generateStatementAny(brk.Value)
|
||||||
case ResultModeVal:
|
case ResultModeVal:
|
||||||
value, err = this.generateStatementVal(brk.Value)
|
value, err = this.generateStatementVal(brk.Value)
|
||||||
loopEntry.loc = false
|
loopEntry.loc = false
|
||||||
@ -124,7 +124,7 @@ func (this *generator) generateLoop (loop *entity.Loop, mode ResultMode) (llvm.V
|
|||||||
loopEntry := this.blockManager.pushLoop(mode)
|
loopEntry := this.blockManager.pushLoop(mode)
|
||||||
defer this.blockManager.popLoop()
|
defer this.blockManager.popLoop()
|
||||||
|
|
||||||
_, _, err := this.generateExpression(loop.Body)
|
_, _, err := this.generateExpressionAny(loop.Body)
|
||||||
if err != nil { return nil, false, err }
|
if err != nil { return nil, false, err }
|
||||||
|
|
||||||
this.blockManager.NewBr(body)
|
this.blockManager.NewBr(body)
|
||||||
|
@ -34,7 +34,7 @@ func (this *generator) generateFunction (
|
|||||||
this.blockManager.addFunctionArgumentDeclarations(function)
|
this.blockManager.addFunctionArgumentDeclarations(function)
|
||||||
|
|
||||||
if function.Signature.Return == nil {
|
if function.Signature.Return == nil {
|
||||||
_, _, err := this.generateExpression(function.Body)
|
_, _, err := this.generateExpressionAny(function.Body)
|
||||||
if err != nil { return nil, err }
|
if err != nil { return nil, err }
|
||||||
this.blockManager.NewRet(nil)
|
this.blockManager.NewRet(nil)
|
||||||
} else {
|
} else {
|
||||||
@ -80,7 +80,7 @@ func (this *generator) generateMethod (
|
|||||||
this.blockManager.addFunctionArgumentDeclarations(method)
|
this.blockManager.addFunctionArgumentDeclarations(method)
|
||||||
|
|
||||||
if method.Signature.Return == nil {
|
if method.Signature.Return == nil {
|
||||||
_, _, err := this.generateExpression(method.Body)
|
_, _, err := this.generateExpressionAny(method.Body)
|
||||||
if err != nil { return nil, err }
|
if err != nil { return nil, err }
|
||||||
this.blockManager.NewRet(nil)
|
this.blockManager.NewRet(nil)
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
Reference in New Issue
Block a user