contract C { fn f(u256[][1][] a) -> (u256) { return 42; } fn g(u256[][1][] a) -> (u256) { a[0]; return 42; } fn h(u256[][1][] a) -> (u256) { a[0][0]; return 42; } } // ==== // compileViaYul: also // ---- // f(u256[][1][]): 0x20, 0x0 -> 42 # valid access stub # // f(u256[][1][]): 0x20, 0x1 -> FAILURE # invalid on argument decoding # // f(u256[][1][]): 0x20, 0x1, 0x20 -> 42 # invalid on outer access # // g(u256[][1][]): 0x20, 0x1, 0x20 -> FAILURE // f(u256[][1][]): 0x20, 0x1, 0x20, 0x20 -> 42 # invalid on inner access # // g(u256[][1][]): 0x20, 0x1, 0x20, 0x20 -> 42 // h(u256[][1][]): 0x20, 0x1, 0x20, 0x20 -> FAILURE // f(u256[][1][]): 0x20, 0x1, 0x20, 0x20, 0x1 -> 42 // g(u256[][1][]): 0x20, 0x1, 0x20, 0x20, 0x1 -> 42 // h(u256[][1][]): 0x20, 0x1, 0x20, 0x20, 0x1 -> FAILURE