diff --git a/src/lib/compiler.ts b/src/lib/compiler.ts index eabd8d3c9..eb2d0ef7a 100644 --- a/src/lib/compiler.ts +++ b/src/lib/compiler.ts @@ -3376,7 +3376,8 @@ export default class Compiler { if (consecutiveBools.length > 0) { this.processBools(consecutiveBools); if (!isStatic) this.pushVoid(e, 'callsub *process_static_tuple_element'); - else if (i !== 0) this.pushVoid(e, 'concat'); + // Don't concat if bools are the first elements + else if (consecutiveBools.length !== i) this.pushVoid(e, `concat // ${i}`); consecutiveBools = []; } diff --git a/tests/contracts/abi.algo.ts b/tests/contracts/abi.algo.ts index c76df533b..d18c3ad5b 100644 --- a/tests/contracts/abi.algo.ts +++ b/tests/contracts/abi.algo.ts @@ -1576,3 +1576,11 @@ class ABITestUpdateStaticFieldInDynamicObjectInBox extends Contract { return this.bMap('bMap').value.str; } } + +class ABITestBoolFirstInTuple extends Contract { + boolFirstInTuple(): [boolean, uint64, uint64] { + const a: [boolean, uint64, uint64] = [true, 1, 2]; + + return a; + } +} diff --git a/tests/contracts/artifacts/ABITestBoolFirstInTuple.approval.teal b/tests/contracts/artifacts/ABITestBoolFirstInTuple.approval.teal new file mode 100644 index 000000000..108bee3c8 --- /dev/null +++ b/tests/contracts/artifacts/ABITestBoolFirstInTuple.approval.teal @@ -0,0 +1,82 @@ +#pragma version 10 + +// This TEAL was generated by TEALScript v0.95.1 +// https://github.com/algorandfoundation/TEALScript + +// This contract is compliant with and/or implements the following ARCs: [ ARC4 ] + +// The following ten lines of TEAL handle initial program flow +// This pattern is used to make it easy for anyone to parse the start of the program and determine if a specific action is allowed +// Here, action refers to the OnComplete in combination with whether the app is being created or called +// Every possible action for this contract is represented in the switch statement +// If the action is not implemented in the contract, its respective branch will be "*NOT_IMPLEMENTED" which just contains "err" +txn ApplicationID +! +int 6 +* +txn OnCompletion ++ +switch *call_NoOp *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED *create_NoOp *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED + +*NOT_IMPLEMENTED: + // The requested action is not implemented in this contract. Are you using the correct OnComplete? Did you set your app ID? + err + +// boolFirstInTuple()(bool,uint64,uint64) +*abi_route_boolFirstInTuple: + // The ABI return prefix + byte 0x151f7c75 + + // execute boolFirstInTuple()(bool,uint64,uint64) + callsub boolFirstInTuple + concat + log + int 1 + return + +// boolFirstInTuple(): [boolean, uint64, uint64] +boolFirstInTuple: + proto 0 1 + + // Push empty bytes after the frame pointer to reserve space for local variables + byte 0x + + // tests/contracts/abi.algo.ts:1582 + // a: [boolean, uint64, uint64] = [true, 1, 2] + byte 0x00 + int 0 + int 1 + setbit + byte 0x0000000000000001 + concat + byte 0x0000000000000002 + concat + frame_bury 0 // a: [boolean, uint64, uint64] + + // tests/contracts/abi.algo.ts:1584 + // return a; + frame_dig 0 // a: [boolean, uint64, uint64] + + // set the subroutine return value + frame_bury 0 + retsub + +*abi_route_createApplication: + int 1 + return + +*create_NoOp: + method "createApplication()void" + txna ApplicationArgs 0 + match *abi_route_createApplication + + // this contract does not implement the given ABI method for create NoOp + err + +*call_NoOp: + method "boolFirstInTuple()(bool,uint64,uint64)" + txna ApplicationArgs 0 + match *abi_route_boolFirstInTuple + + // this contract does not implement the given ABI method for call NoOp + err \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestBoolFirstInTuple.arc32.json b/tests/contracts/artifacts/ABITestBoolFirstInTuple.arc32.json new file mode 100644 index 000000000..b8e680963 --- /dev/null +++ b/tests/contracts/artifacts/ABITestBoolFirstInTuple.arc32.json @@ -0,0 +1,65 @@ +{ + "hints": { + "boolFirstInTuple()(bool,uint64,uint64)": { + "call_config": { + "no_op": "CALL" + } + }, + "createApplication()void": { + "call_config": { + "no_op": "CREATE" + } + } + }, + "bare_call_config": { + "no_op": "NEVER", + "opt_in": "NEVER", + "close_out": "NEVER", + "update_application": "NEVER", + "delete_application": "NEVER" + }, + "schema": { + "local": { + "declared": {}, + "reserved": {} + }, + "global": { + "declared": {}, + "reserved": {} + } + }, + "state": { + "global": { + "num_byte_slices": 0, + "num_uints": 0 + }, + "local": { + "num_byte_slices": 0, + "num_uints": 0 + } + }, + "source": { + "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCgovLyBUaGlzIFRFQUwgd2FzIGdlbmVyYXRlZCBieSBURUFMU2NyaXB0IHYwLjk1LjEKLy8gaHR0cHM6Ly9naXRodWIuY29tL2FsZ29yYW5kZm91bmRhdGlvbi9URUFMU2NyaXB0CgovLyBUaGlzIGNvbnRyYWN0IGlzIGNvbXBsaWFudCB3aXRoIGFuZC9vciBpbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcgQVJDczogWyBBUkM0IF0KCi8vIFRoZSBmb2xsb3dpbmcgdGVuIGxpbmVzIG9mIFRFQUwgaGFuZGxlIGluaXRpYWwgcHJvZ3JhbSBmbG93Ci8vIFRoaXMgcGF0dGVybiBpcyB1c2VkIHRvIG1ha2UgaXQgZWFzeSBmb3IgYW55b25lIHRvIHBhcnNlIHRoZSBzdGFydCBvZiB0aGUgcHJvZ3JhbSBhbmQgZGV0ZXJtaW5lIGlmIGEgc3BlY2lmaWMgYWN0aW9uIGlzIGFsbG93ZWQKLy8gSGVyZSwgYWN0aW9uIHJlZmVycyB0byB0aGUgT25Db21wbGV0ZSBpbiBjb21iaW5hdGlvbiB3aXRoIHdoZXRoZXIgdGhlIGFwcCBpcyBiZWluZyBjcmVhdGVkIG9yIGNhbGxlZAovLyBFdmVyeSBwb3NzaWJsZSBhY3Rpb24gZm9yIHRoaXMgY29udHJhY3QgaXMgcmVwcmVzZW50ZWQgaW4gdGhlIHN3aXRjaCBzdGF0ZW1lbnQKLy8gSWYgdGhlIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGNvbnRyYWN0LCBpdHMgcmVzcGVjdGl2ZSBicmFuY2ggd2lsbCBiZSAiKk5PVF9JTVBMRU1FTlRFRCIgd2hpY2gganVzdCBjb250YWlucyAiZXJyIgp0eG4gQXBwbGljYXRpb25JRAohCmludCA2CioKdHhuIE9uQ29tcGxldGlvbgorCnN3aXRjaCAqY2FsbF9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqY3JlYXRlX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVECgoqTk9UX0lNUExFTUVOVEVEOgoJLy8gVGhlIHJlcXVlc3RlZCBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoaXMgY29udHJhY3QuIEFyZSB5b3UgdXNpbmcgdGhlIGNvcnJlY3QgT25Db21wbGV0ZT8gRGlkIHlvdSBzZXQgeW91ciBhcHAgSUQ/CgllcnIKCi8vIGJvb2xGaXJzdEluVHVwbGUoKShib29sLHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfYm9vbEZpcnN0SW5UdXBsZToKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZSAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBib29sRmlyc3RJblR1cGxlKCkoYm9vbCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBib29sRmlyc3RJblR1cGxlCgljb25jYXQKCWxvZwoJaW50IDEKCXJldHVybgoKLy8gYm9vbEZpcnN0SW5UdXBsZSgpOiBbYm9vbGVhbiwgdWludDY0LCB1aW50NjRdCmJvb2xGaXJzdEluVHVwbGU6Cglwcm90byAwIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZSAweAoKCS8vIHRlc3RzL2NvbnRyYWN0cy9hYmkuYWxnby50czoxNTgyCgkvLyBhOiBbYm9vbGVhbiwgdWludDY0LCB1aW50NjRdID0gW3RydWUsIDEsIDJdCglieXRlIDB4MDAKCWludCAwCglpbnQgMQoJc2V0Yml0CglieXRlIDB4MDAwMDAwMDAwMDAwMDAwMQoJY29uY2F0CglieXRlIDB4MDAwMDAwMDAwMDAwMDAwMgoJY29uY2F0CglmcmFtZV9idXJ5IDAgLy8gYTogW2Jvb2xlYW4sIHVpbnQ2NCwgdWludDY0XQoKCS8vIHRlc3RzL2NvbnRyYWN0cy9hYmkuYWxnby50czoxNTg0CgkvLyByZXR1cm4gYTsKCWZyYW1lX2RpZyAwIC8vIGE6IFtib29sZWFuLCB1aW50NjQsIHVpbnQ2NF0KCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbjoKCWludCAxCglyZXR1cm4KCipjcmVhdGVfTm9PcDoKCW1ldGhvZCAiY3JlYXRlQXBwbGljYXRpb24oKXZvaWQiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uCgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNyZWF0ZSBOb09wCgllcnIKCipjYWxsX05vT3A6CgltZXRob2QgImJvb2xGaXJzdEluVHVwbGUoKShib29sLHVpbnQ2NCx1aW50NjQpIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9ib29sRmlyc3RJblR1cGxlCgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNhbGwgTm9PcAoJZXJy", + "clear": "I3ByYWdtYSB2ZXJzaW9uIDEw" + }, + "contract": { + "name": "ABITestBoolFirstInTuple", + "desc": "", + "methods": [ + { + "name": "boolFirstInTuple", + "args": [], + "returns": { + "type": "(bool,uint64,uint64)" + } + }, + { + "name": "createApplication", + "args": [], + "returns": { + "type": "void" + } + } + ] + } +} \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestBoolFirstInTuple.arc4.json b/tests/contracts/artifacts/ABITestBoolFirstInTuple.arc4.json new file mode 100644 index 000000000..35d3bb9e3 --- /dev/null +++ b/tests/contracts/artifacts/ABITestBoolFirstInTuple.arc4.json @@ -0,0 +1,20 @@ +{ + "name": "ABITestBoolFirstInTuple", + "desc": "", + "methods": [ + { + "name": "boolFirstInTuple", + "args": [], + "returns": { + "type": "(bool,uint64,uint64)" + } + }, + { + "name": "createApplication", + "args": [], + "returns": { + "type": "void" + } + } + ] +} \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestBoolFirstInTuple.arc56_draft.json b/tests/contracts/artifacts/ABITestBoolFirstInTuple.arc56_draft.json new file mode 100644 index 000000000..d548dc633 --- /dev/null +++ b/tests/contracts/artifacts/ABITestBoolFirstInTuple.arc56_draft.json @@ -0,0 +1,443 @@ +{ + "name": "ABITestBoolFirstInTuple", + "desc": "", + "methods": [ + { + "name": "boolFirstInTuple", + "args": [], + "returns": { + "type": "(bool,uint64,uint64)" + }, + "actions": { + "create": [], + "call": [ + "NoOp" + ] + } + }, + { + "name": "createApplication", + "args": [], + "returns": { + "type": "void" + }, + "actions": { + "create": [ + "NoOp" + ], + "call": [] + } + } + ], + "arcs": [ + 4, + 56 + ], + "structs": {}, + "state": { + "schema": { + "global": { + "bytes": 0, + "ints": 0 + }, + "local": { + "bytes": 0, + "ints": 0 + } + }, + "keys": { + "global": {}, + "local": {}, + "box": {} + }, + "maps": { + "global": {}, + "local": {}, + "box": {} + } + }, + "bareActions": { + "create": [], + "call": [] + }, + "sourceInfo": [ + { + "teal": 1, + "source": 1580, + "pc": [ + 0, + 1, + 2, + 3 + ] + }, + { + "teal": 13, + "source": 1580, + "pc": [ + 4, + 5 + ] + }, + { + "teal": 14, + "source": 1580, + "pc": [ + 6 + ] + }, + { + "teal": 15, + "source": 1580, + "pc": [ + 7, + 8 + ] + }, + { + "teal": 16, + "source": 1580, + "pc": [ + 9 + ] + }, + { + "teal": 17, + "source": 1580, + "pc": [ + 10, + 11 + ] + }, + { + "teal": 18, + "source": 1580, + "pc": [ + 12 + ] + }, + { + "teal": 19, + "source": 1580, + "pc": [ + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38 + ] + }, + { + "teal": 23, + "source": 1580, + "errorMessage": "The requested action is not implemented in this contract. Are you using the correct OnComplete? Did you set your app ID?", + "pc": [ + 39 + ] + }, + { + "teal": 28, + "source": 1581, + "pc": [ + 40, + 41, + 42, + 43, + 44, + 45 + ] + }, + { + "teal": 31, + "source": 1581, + "pc": [ + 46, + 47, + 48 + ] + }, + { + "teal": 32, + "source": 1581, + "pc": [ + 49 + ] + }, + { + "teal": 33, + "source": 1581, + "pc": [ + 50 + ] + }, + { + "teal": 34, + "source": 1581, + "pc": [ + 51 + ] + }, + { + "teal": 35, + "source": 1581, + "pc": [ + 52 + ] + }, + { + "teal": 39, + "source": 1581, + "pc": [ + 53, + 54, + 55 + ] + }, + { + "teal": 42, + "source": 1581, + "pc": [ + 56, + 57 + ] + }, + { + "teal": 46, + "source": 1582, + "pc": [ + 58, + 59, + 60 + ] + }, + { + "teal": 47, + "source": 1582, + "pc": [ + 61, + 62 + ] + }, + { + "teal": 48, + "source": 1582, + "pc": [ + 63 + ] + }, + { + "teal": 49, + "source": 1582, + "pc": [ + 64 + ] + }, + { + "teal": 50, + "source": 1582, + "pc": [ + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74 + ] + }, + { + "teal": 51, + "source": 1582, + "pc": [ + 75 + ] + }, + { + "teal": 52, + "source": 1582, + "pc": [ + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85 + ] + }, + { + "teal": 53, + "source": 1582, + "pc": [ + 86 + ] + }, + { + "teal": 54, + "source": 1582, + "pc": [ + 87, + 88 + ] + }, + { + "teal": 58, + "source": 1584, + "pc": [ + 89, + 90 + ] + }, + { + "teal": 61, + "source": 1581, + "pc": [ + 91, + 92 + ] + }, + { + "teal": 62, + "source": 1581, + "pc": [ + 93 + ] + }, + { + "teal": 65, + "source": 1580, + "pc": [ + 94 + ] + }, + { + "teal": 66, + "source": 1580, + "pc": [ + 95 + ] + }, + { + "teal": 69, + "source": 1580, + "pc": [ + 96, + 97, + 98, + 99, + 100, + 101 + ] + }, + { + "teal": 70, + "source": 1580, + "pc": [ + 102, + 103, + 104 + ] + }, + { + "teal": 71, + "source": 1580, + "pc": [ + 105, + 106, + 107, + 108 + ] + }, + { + "teal": 74, + "source": 1580, + "errorMessage": "this contract does not implement the given ABI method for create NoOp", + "pc": [ + 109 + ] + }, + { + "teal": 77, + "source": 1580, + "pc": [ + 110, + 111, + 112, + 113, + 114, + 115 + ] + }, + { + "teal": 78, + "source": 1580, + "pc": [ + 116, + 117, + 118 + ] + }, + { + "teal": 79, + "source": 1580, + "pc": [ + 119, + 120, + 121, + 122 + ] + }, + { + "teal": 82, + "source": 1580, + "errorMessage": "this contract does not implement the given ABI method for call NoOp", + "pc": [ + 123 + ] + } + ], + "source": { + "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCgovLyBUaGlzIFRFQUwgd2FzIGdlbmVyYXRlZCBieSBURUFMU2NyaXB0IHYwLjk1LjEKLy8gaHR0cHM6Ly9naXRodWIuY29tL2FsZ29yYW5kZm91bmRhdGlvbi9URUFMU2NyaXB0CgovLyBUaGlzIGNvbnRyYWN0IGlzIGNvbXBsaWFudCB3aXRoIGFuZC9vciBpbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcgQVJDczogWyBBUkM0IF0KCi8vIFRoZSBmb2xsb3dpbmcgdGVuIGxpbmVzIG9mIFRFQUwgaGFuZGxlIGluaXRpYWwgcHJvZ3JhbSBmbG93Ci8vIFRoaXMgcGF0dGVybiBpcyB1c2VkIHRvIG1ha2UgaXQgZWFzeSBmb3IgYW55b25lIHRvIHBhcnNlIHRoZSBzdGFydCBvZiB0aGUgcHJvZ3JhbSBhbmQgZGV0ZXJtaW5lIGlmIGEgc3BlY2lmaWMgYWN0aW9uIGlzIGFsbG93ZWQKLy8gSGVyZSwgYWN0aW9uIHJlZmVycyB0byB0aGUgT25Db21wbGV0ZSBpbiBjb21iaW5hdGlvbiB3aXRoIHdoZXRoZXIgdGhlIGFwcCBpcyBiZWluZyBjcmVhdGVkIG9yIGNhbGxlZAovLyBFdmVyeSBwb3NzaWJsZSBhY3Rpb24gZm9yIHRoaXMgY29udHJhY3QgaXMgcmVwcmVzZW50ZWQgaW4gdGhlIHN3aXRjaCBzdGF0ZW1lbnQKLy8gSWYgdGhlIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGNvbnRyYWN0LCBpdHMgcmVzcGVjdGl2ZSBicmFuY2ggd2lsbCBiZSAiKk5PVF9JTVBMRU1FTlRFRCIgd2hpY2gganVzdCBjb250YWlucyAiZXJyIgp0eG4gQXBwbGljYXRpb25JRAohCmludCA2CioKdHhuIE9uQ29tcGxldGlvbgorCnN3aXRjaCAqY2FsbF9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqY3JlYXRlX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVECgoqTk9UX0lNUExFTUVOVEVEOgoJLy8gVGhlIHJlcXVlc3RlZCBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoaXMgY29udHJhY3QuIEFyZSB5b3UgdXNpbmcgdGhlIGNvcnJlY3QgT25Db21wbGV0ZT8gRGlkIHlvdSBzZXQgeW91ciBhcHAgSUQ/CgllcnIKCi8vIGJvb2xGaXJzdEluVHVwbGUoKShib29sLHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfYm9vbEZpcnN0SW5UdXBsZToKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZSAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBib29sRmlyc3RJblR1cGxlKCkoYm9vbCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBib29sRmlyc3RJblR1cGxlCgljb25jYXQKCWxvZwoJaW50IDEKCXJldHVybgoKLy8gYm9vbEZpcnN0SW5UdXBsZSgpOiBbYm9vbGVhbiwgdWludDY0LCB1aW50NjRdCmJvb2xGaXJzdEluVHVwbGU6Cglwcm90byAwIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZSAweAoKCS8vIHRlc3RzL2NvbnRyYWN0cy9hYmkuYWxnby50czoxNTgyCgkvLyBhOiBbYm9vbGVhbiwgdWludDY0LCB1aW50NjRdID0gW3RydWUsIDEsIDJdCglieXRlIDB4MDAKCWludCAwCglpbnQgMQoJc2V0Yml0CglieXRlIDB4MDAwMDAwMDAwMDAwMDAwMQoJY29uY2F0CglieXRlIDB4MDAwMDAwMDAwMDAwMDAwMgoJY29uY2F0CglmcmFtZV9idXJ5IDAgLy8gYTogW2Jvb2xlYW4sIHVpbnQ2NCwgdWludDY0XQoKCS8vIHRlc3RzL2NvbnRyYWN0cy9hYmkuYWxnby50czoxNTg0CgkvLyByZXR1cm4gYTsKCWZyYW1lX2RpZyAwIC8vIGE6IFtib29sZWFuLCB1aW50NjQsIHVpbnQ2NF0KCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbjoKCWludCAxCglyZXR1cm4KCipjcmVhdGVfTm9PcDoKCW1ldGhvZCAiY3JlYXRlQXBwbGljYXRpb24oKXZvaWQiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uCgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNyZWF0ZSBOb09wCgllcnIKCipjYWxsX05vT3A6CgltZXRob2QgImJvb2xGaXJzdEluVHVwbGUoKShib29sLHVpbnQ2NCx1aW50NjQpIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9ib29sRmlyc3RJblR1cGxlCgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNhbGwgTm9PcAoJZXJy", + "clear": "I3ByYWdtYSB2ZXJzaW9uIDEw" + }, + "byteCode": { + "approval": "CiABATEYFIEGCzEZCI0MAEcAAAAAAAAAAAAAADkAAAAAAAAAAAAAAIAEFR98dYgABFCwIkOKAAGAAIABAIEAIlSACAAAAAAAAAABUIAIAAAAAAAAAAJQjACLAIwAiSJDgAS4RHs2NhoAjgH/8QCABKJzGNU2GgCOAf+tAA==", + "clear": "Cg==" + }, + "compilerInfo": { + "compiler": "algod", + "compilerVersion": { + "major": 3, + "minor": 24, + "patch": 0, + "commitHash": "5c2cf06d" + } + } +} \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestBoolFirstInTuple.clear.teal b/tests/contracts/artifacts/ABITestBoolFirstInTuple.clear.teal new file mode 100644 index 000000000..e9f1d65b3 --- /dev/null +++ b/tests/contracts/artifacts/ABITestBoolFirstInTuple.clear.teal @@ -0,0 +1 @@ +#pragma version 10 \ No newline at end of file