| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627 |
- // Part of the Carbon Language project, under the Apache License v2.0 with LLVM
- // Exceptions. See /LICENSE for license information.
- // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
- //
- // AUTOUPDATE
- // TIP: To test this file alone, run:
- // TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/tuple/import.carbon
- // TIP: To dump output, run:
- // TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/tuple/import.carbon
- // --- implicit.carbon
- package Implicit;
- var a_ref: (i32,) = (0,);
- var b_ref: (((i32,), i32), (i32, i32)) = (((0,), 1), (2, 3));
- class C(X:! (i32, i32)) {}
- fn F() -> C((1, 2));
- // --- implicit.impl.carbon
- impl package Implicit;
- var a: (i32,) = a_ref;
- var b: (((i32,), i32), (i32, i32)) = b_ref;
- var c: C((1, 2)) = F();
- // --- fail_bad_type.impl.carbon
- impl package Implicit;
- // CHECK:STDERR: fail_bad_type.impl.carbon:[[@LINE+8]]:14: error: cannot initialize tuple of 2 elements from tuple with 3 elements [TupleInitElementCountMismatch]
- // CHECK:STDERR: var c_bad: C((1, 2, 3)) = F();
- // CHECK:STDERR: ^~~~~~~~~
- // CHECK:STDERR: fail_bad_type.impl.carbon:[[@LINE-5]]:6: in import [InImport]
- // CHECK:STDERR: implicit.carbon:7:1: note: while deducing parameters of generic declared here [DeductionGenericHere]
- // CHECK:STDERR: class C(X:! (i32, i32)) {}
- // CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~
- // CHECK:STDERR:
- var c_bad: C((1, 2, 3)) = F();
- // --- fail_bad_value.impl.carbon
- impl package Implicit;
- // CHECK:STDERR: fail_bad_value.impl.carbon:[[@LINE+6]]:1: error: cannot implicitly convert from `C(<cannot stringify inst+358 kind TupleValue>)` to `C(<cannot stringify inst+346 kind TupleValue>)` [ImplicitAsConversionFailure]
- // CHECK:STDERR: var c_bad: C((3, 4)) = F();
- // CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~~~
- // CHECK:STDERR: fail_bad_value.impl.carbon:[[@LINE+3]]:1: note: type `C(<cannot stringify inst+358 kind TupleValue>)` does not implement interface `ImplicitAs(C(<cannot stringify inst+346 kind TupleValue>))` [MissingImplInMemberAccessNote]
- // CHECK:STDERR: var c_bad: C((3, 4)) = F();
- // CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~~~
- var c_bad: C((3, 4)) = F();
- // CHECK:STDOUT: --- implicit.carbon
- // CHECK:STDOUT:
- // CHECK:STDOUT: constants {
- // CHECK:STDOUT: %.1: Core.IntLiteral = int_value 32 [template]
- // CHECK:STDOUT: %Int.type: type = fn_type @Int [template]
- // CHECK:STDOUT: %Int: %Int.type = struct_value () [template]
- // CHECK:STDOUT: %i32: type = int_type signed, %.1 [template]
- // CHECK:STDOUT: %tuple.type.1: type = tuple_type (type) [template]
- // CHECK:STDOUT: %tuple.type.2: type = tuple_type (%i32) [template]
- // CHECK:STDOUT: %.2: Core.IntLiteral = int_value 0 [template]
- // CHECK:STDOUT: %tuple.type.3: type = tuple_type (Core.IntLiteral) [template]
- // CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template]
- // CHECK:STDOUT: %Convert.type.14: type = fn_type @Convert.2, @impl.1(%.1) [template]
- // CHECK:STDOUT: %Convert.14: %Convert.type.14 = struct_value () [template]
- // CHECK:STDOUT: %.26: <witness> = interface_witness (%Convert.14) [template]
- // CHECK:STDOUT: %.27: <bound method> = bound_method %.2, %Convert.14 [template]
- // CHECK:STDOUT: %.28: <specific function> = specific_function %.27, @Convert.2(%.1) [template]
- // CHECK:STDOUT: %.29: %i32 = int_value 0 [template]
- // CHECK:STDOUT: %tuple.1: %tuple.type.2 = tuple_value (%.29) [template]
- // CHECK:STDOUT: %tuple.type.4: type = tuple_type (%tuple.type.1, type) [template]
- // CHECK:STDOUT: %tuple.type.5: type = tuple_type (type, type) [template]
- // CHECK:STDOUT: %tuple.type.6: type = tuple_type (%tuple.type.4, %tuple.type.5) [template]
- // CHECK:STDOUT: %tuple.type.7: type = tuple_type (%tuple.type.2, %i32) [template]
- // CHECK:STDOUT: %tuple.type.8: type = tuple_type (%i32, %i32) [template]
- // CHECK:STDOUT: %tuple.type.9: type = tuple_type (%tuple.type.7, %tuple.type.8) [template]
- // CHECK:STDOUT: %.33: Core.IntLiteral = int_value 1 [template]
- // CHECK:STDOUT: %tuple.type.11: type = tuple_type (%tuple.type.3, Core.IntLiteral) [template]
- // CHECK:STDOUT: %.34: Core.IntLiteral = int_value 2 [template]
- // CHECK:STDOUT: %.35: Core.IntLiteral = int_value 3 [template]
- // CHECK:STDOUT: %tuple.type.12: type = tuple_type (Core.IntLiteral, Core.IntLiteral) [template]
- // CHECK:STDOUT: %tuple.type.13: type = tuple_type (%tuple.type.11, %tuple.type.12) [template]
- // CHECK:STDOUT: %.36: <bound method> = bound_method %.33, %Convert.14 [template]
- // CHECK:STDOUT: %.37: <specific function> = specific_function %.36, @Convert.2(%.1) [template]
- // CHECK:STDOUT: %.38: %i32 = int_value 1 [template]
- // CHECK:STDOUT: %tuple.2: %tuple.type.7 = tuple_value (%tuple.1, %.38) [template]
- // CHECK:STDOUT: %.39: <bound method> = bound_method %.34, %Convert.14 [template]
- // CHECK:STDOUT: %.40: <specific function> = specific_function %.39, @Convert.2(%.1) [template]
- // CHECK:STDOUT: %.41: %i32 = int_value 2 [template]
- // CHECK:STDOUT: %.42: <bound method> = bound_method %.35, %Convert.14 [template]
- // CHECK:STDOUT: %.43: <specific function> = specific_function %.42, @Convert.2(%.1) [template]
- // CHECK:STDOUT: %.44: %i32 = int_value 3 [template]
- // CHECK:STDOUT: %tuple.3: %tuple.type.8 = tuple_value (%.41, %.44) [template]
- // CHECK:STDOUT: %tuple.4: %tuple.type.9 = tuple_value (%tuple.2, %tuple.3) [template]
- // CHECK:STDOUT: %X: %tuple.type.8 = bind_symbolic_name X, 0 [symbolic]
- // CHECK:STDOUT: %X.patt: %tuple.type.8 = symbolic_binding_pattern X, 0 [symbolic]
- // CHECK:STDOUT: %C.type: type = generic_class_type @C [template]
- // CHECK:STDOUT: %C.1: %C.type = struct_value () [template]
- // CHECK:STDOUT: %C.2: type = class_type @C, @C(%X) [symbolic]
- // CHECK:STDOUT: %.45: type = struct_type {} [template]
- // CHECK:STDOUT: %.46: <witness> = complete_type_witness %.45 [template]
- // CHECK:STDOUT: %tuple.5: %tuple.type.8 = tuple_value (%.38, %.41) [template]
- // CHECK:STDOUT: %C.3: type = class_type @C, @C(%tuple.5) [template]
- // CHECK:STDOUT: %F.type: type = fn_type @F [template]
- // CHECK:STDOUT: %F: %F.type = struct_value () [template]
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: imports {
- // CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [template] {
- // CHECK:STDOUT: .Int = %import_ref.1
- // CHECK:STDOUT: .ImplicitAs = %import_ref.2
- // CHECK:STDOUT: import Core//prelude
- // CHECK:STDOUT: import Core//prelude/...
- // CHECK:STDOUT: }
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: file {
- // CHECK:STDOUT: package: <namespace> = namespace [template] {
- // CHECK:STDOUT: .Core = imports.%Core
- // CHECK:STDOUT: .a_ref = %a_ref
- // CHECK:STDOUT: .b_ref = %b_ref
- // CHECK:STDOUT: .C = %C.decl
- // CHECK:STDOUT: .F = %F.decl
- // CHECK:STDOUT: }
- // CHECK:STDOUT: %Core.import = import Core
- // CHECK:STDOUT: %.loc4_13: Core.IntLiteral = int_value 32 [template = constants.%.1]
- // CHECK:STDOUT: %int.make_type_signed.loc4: init type = call constants.%Int(%.loc4_13) [template = constants.%i32]
- // CHECK:STDOUT: %.loc4_17.1: %tuple.type.1 = tuple_literal (%int.make_type_signed.loc4)
- // CHECK:STDOUT: %.loc4_17.2: type = value_of_initializer %int.make_type_signed.loc4 [template = constants.%i32]
- // CHECK:STDOUT: %.loc4_17.3: type = converted %int.make_type_signed.loc4, %.loc4_17.2 [template = constants.%i32]
- // CHECK:STDOUT: %.loc4_17.4: type = converted %.loc4_17.1, constants.%tuple.type.2 [template = constants.%tuple.type.2]
- // CHECK:STDOUT: %a_ref.var: ref %tuple.type.2 = var a_ref
- // CHECK:STDOUT: %a_ref: ref %tuple.type.2 = bind_name a_ref, %a_ref.var
- // CHECK:STDOUT: %.loc5_15: Core.IntLiteral = int_value 32 [template = constants.%.1]
- // CHECK:STDOUT: %int.make_type_signed.loc5_15: init type = call constants.%Int(%.loc5_15) [template = constants.%i32]
- // CHECK:STDOUT: %.loc5_19: %tuple.type.1 = tuple_literal (%int.make_type_signed.loc5_15)
- // CHECK:STDOUT: %.loc5_22: Core.IntLiteral = int_value 32 [template = constants.%.1]
- // CHECK:STDOUT: %int.make_type_signed.loc5_22: init type = call constants.%Int(%.loc5_22) [template = constants.%i32]
- // CHECK:STDOUT: %.loc5_25: %tuple.type.4 = tuple_literal (%.loc5_19, %int.make_type_signed.loc5_22)
- // CHECK:STDOUT: %.loc5_29: Core.IntLiteral = int_value 32 [template = constants.%.1]
- // CHECK:STDOUT: %int.make_type_signed.loc5_29: init type = call constants.%Int(%.loc5_29) [template = constants.%i32]
- // CHECK:STDOUT: %.loc5_34: Core.IntLiteral = int_value 32 [template = constants.%.1]
- // CHECK:STDOUT: %int.make_type_signed.loc5_34: init type = call constants.%Int(%.loc5_34) [template = constants.%i32]
- // CHECK:STDOUT: %.loc5_37: %tuple.type.5 = tuple_literal (%int.make_type_signed.loc5_29, %int.make_type_signed.loc5_34)
- // CHECK:STDOUT: %.loc5_38.1: %tuple.type.6 = tuple_literal (%.loc5_25, %.loc5_37)
- // CHECK:STDOUT: %.loc5_38.2: type = value_of_initializer %int.make_type_signed.loc5_15 [template = constants.%i32]
- // CHECK:STDOUT: %.loc5_38.3: type = converted %int.make_type_signed.loc5_15, %.loc5_38.2 [template = constants.%i32]
- // CHECK:STDOUT: %.loc5_38.4: type = converted %.loc5_19, constants.%tuple.type.2 [template = constants.%tuple.type.2]
- // CHECK:STDOUT: %.loc5_38.5: type = value_of_initializer %int.make_type_signed.loc5_22 [template = constants.%i32]
- // CHECK:STDOUT: %.loc5_38.6: type = converted %int.make_type_signed.loc5_22, %.loc5_38.5 [template = constants.%i32]
- // CHECK:STDOUT: %.loc5_38.7: type = converted %.loc5_25, constants.%tuple.type.7 [template = constants.%tuple.type.7]
- // CHECK:STDOUT: %.loc5_38.8: type = value_of_initializer %int.make_type_signed.loc5_29 [template = constants.%i32]
- // CHECK:STDOUT: %.loc5_38.9: type = converted %int.make_type_signed.loc5_29, %.loc5_38.8 [template = constants.%i32]
- // CHECK:STDOUT: %.loc5_38.10: type = value_of_initializer %int.make_type_signed.loc5_34 [template = constants.%i32]
- // CHECK:STDOUT: %.loc5_38.11: type = converted %int.make_type_signed.loc5_34, %.loc5_38.10 [template = constants.%i32]
- // CHECK:STDOUT: %.loc5_38.12: type = converted %.loc5_37, constants.%tuple.type.8 [template = constants.%tuple.type.8]
- // CHECK:STDOUT: %.loc5_38.13: type = converted %.loc5_38.1, constants.%tuple.type.9 [template = constants.%tuple.type.9]
- // CHECK:STDOUT: %b_ref.var: ref %tuple.type.9 = var b_ref
- // CHECK:STDOUT: %b_ref: ref %tuple.type.9 = bind_name b_ref, %b_ref.var
- // CHECK:STDOUT: %C.decl: %C.type = class_decl @C [template = constants.%C.1] {
- // CHECK:STDOUT: %X.patt.loc7_9.1: %tuple.type.8 = symbolic_binding_pattern X, 0 [symbolic = %X.patt.loc7_9.2 (constants.%X.patt)]
- // CHECK:STDOUT: %X.param_patt: %tuple.type.8 = value_param_pattern %X.patt.loc7_9.1, runtime_param<invalid> [symbolic = %X.patt.loc7_9.2 (constants.%X.patt)]
- // CHECK:STDOUT: } {
- // CHECK:STDOUT: %.loc7_14: Core.IntLiteral = int_value 32 [template = constants.%.1]
- // CHECK:STDOUT: %int.make_type_signed.loc7_14: init type = call constants.%Int(%.loc7_14) [template = constants.%i32]
- // CHECK:STDOUT: %.loc7_19: Core.IntLiteral = int_value 32 [template = constants.%.1]
- // CHECK:STDOUT: %int.make_type_signed.loc7_19: init type = call constants.%Int(%.loc7_19) [template = constants.%i32]
- // CHECK:STDOUT: %.loc7_22.1: %tuple.type.5 = tuple_literal (%int.make_type_signed.loc7_14, %int.make_type_signed.loc7_19)
- // CHECK:STDOUT: %.loc7_22.2: type = value_of_initializer %int.make_type_signed.loc7_14 [template = constants.%i32]
- // CHECK:STDOUT: %.loc7_22.3: type = converted %int.make_type_signed.loc7_14, %.loc7_22.2 [template = constants.%i32]
- // CHECK:STDOUT: %.loc7_22.4: type = value_of_initializer %int.make_type_signed.loc7_19 [template = constants.%i32]
- // CHECK:STDOUT: %.loc7_22.5: type = converted %int.make_type_signed.loc7_19, %.loc7_22.4 [template = constants.%i32]
- // CHECK:STDOUT: %.loc7_22.6: type = converted %.loc7_22.1, constants.%tuple.type.8 [template = constants.%tuple.type.8]
- // CHECK:STDOUT: %X.param: %tuple.type.8 = value_param runtime_param<invalid>
- // CHECK:STDOUT: %X.loc7_9.1: %tuple.type.8 = bind_symbolic_name X, 0, %X.param [symbolic = %X.loc7_9.2 (constants.%X)]
- // CHECK:STDOUT: }
- // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {
- // CHECK:STDOUT: %return.patt: %C.3 = return_slot_pattern
- // CHECK:STDOUT: %return.param_patt: %C.3 = out_param_pattern %return.patt, runtime_param0
- // CHECK:STDOUT: } {
- // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [template = constants.%C.1]
- // CHECK:STDOUT: %.loc9_14: Core.IntLiteral = int_value 1 [template = constants.%.33]
- // CHECK:STDOUT: %.loc9_17: Core.IntLiteral = int_value 2 [template = constants.%.34]
- // CHECK:STDOUT: %.loc9_18.1: %tuple.type.12 = tuple_literal (%.loc9_14, %.loc9_17)
- // CHECK:STDOUT: %.loc9_18.2: %Convert.type.2 = interface_witness_access constants.%.26, element0 [template = constants.%Convert.14]
- // CHECK:STDOUT: %.loc9_18.3: <bound method> = bound_method %.loc9_14, %.loc9_18.2 [template = constants.%.36]
- // CHECK:STDOUT: %.loc9_18.4: <specific function> = specific_function %.loc9_18.3, @Convert.2(constants.%.1) [template = constants.%.37]
- // CHECK:STDOUT: %int.convert_checked.loc9_18.1: init %i32 = call %.loc9_18.4(%.loc9_14) [template = constants.%.38]
- // CHECK:STDOUT: %.loc9_18.5: %i32 = value_of_initializer %int.convert_checked.loc9_18.1 [template = constants.%.38]
- // CHECK:STDOUT: %.loc9_18.6: %i32 = converted %.loc9_14, %.loc9_18.5 [template = constants.%.38]
- // CHECK:STDOUT: %.loc9_18.7: %Convert.type.2 = interface_witness_access constants.%.26, element0 [template = constants.%Convert.14]
- // CHECK:STDOUT: %.loc9_18.8: <bound method> = bound_method %.loc9_17, %.loc9_18.7 [template = constants.%.39]
- // CHECK:STDOUT: %.loc9_18.9: <specific function> = specific_function %.loc9_18.8, @Convert.2(constants.%.1) [template = constants.%.40]
- // CHECK:STDOUT: %int.convert_checked.loc9_18.2: init %i32 = call %.loc9_18.9(%.loc9_17) [template = constants.%.41]
- // CHECK:STDOUT: %.loc9_18.10: %i32 = value_of_initializer %int.convert_checked.loc9_18.2 [template = constants.%.41]
- // CHECK:STDOUT: %.loc9_18.11: %i32 = converted %.loc9_17, %.loc9_18.10 [template = constants.%.41]
- // CHECK:STDOUT: %tuple: %tuple.type.8 = tuple_value (%.loc9_18.6, %.loc9_18.11) [template = constants.%tuple.5]
- // CHECK:STDOUT: %.loc9_12: %tuple.type.8 = converted %.loc9_18.1, %tuple [template = constants.%tuple.5]
- // CHECK:STDOUT: %C: type = class_type @C, @C(constants.%tuple.5) [template = constants.%C.3]
- // CHECK:STDOUT: %return.param: ref %C.3 = out_param runtime_param0
- // CHECK:STDOUT: %return: ref %C.3 = return_slot %return.param
- // CHECK:STDOUT: }
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: generic class @C(%X.loc7_9.1: %tuple.type.8) {
- // CHECK:STDOUT: %X.loc7_9.2: %tuple.type.8 = bind_symbolic_name X, 0 [symbolic = %X.loc7_9.2 (constants.%X)]
- // CHECK:STDOUT: %X.patt.loc7_9.2: %tuple.type.8 = symbolic_binding_pattern X, 0 [symbolic = %X.patt.loc7_9.2 (constants.%X.patt)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT:
- // CHECK:STDOUT: class {
- // CHECK:STDOUT: %.loc7_26: <witness> = complete_type_witness %.45 [template = constants.%.46]
- // CHECK:STDOUT:
- // CHECK:STDOUT: !members:
- // CHECK:STDOUT: .Self = constants.%C.2
- // CHECK:STDOUT: }
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: fn @F() -> %C.3;
- // CHECK:STDOUT:
- // CHECK:STDOUT: fn @__global_init() {
- // CHECK:STDOUT: !entry:
- // CHECK:STDOUT: %.loc4_22: Core.IntLiteral = int_value 0 [template = constants.%.2]
- // CHECK:STDOUT: %.loc4_24.1: %tuple.type.3 = tuple_literal (%.loc4_22)
- // CHECK:STDOUT: %.loc4_24.2: %Convert.type.2 = interface_witness_access constants.%.26, element0 [template = constants.%Convert.14]
- // CHECK:STDOUT: %.loc4_24.3: <bound method> = bound_method %.loc4_22, %.loc4_24.2 [template = constants.%.27]
- // CHECK:STDOUT: %.loc4_24.4: <specific function> = specific_function %.loc4_24.3, @Convert.2(constants.%.1) [template = constants.%.28]
- // CHECK:STDOUT: %int.convert_checked.loc4: init %i32 = call %.loc4_24.4(%.loc4_22) [template = constants.%.29]
- // CHECK:STDOUT: %.loc4_24.5: init %i32 = converted %.loc4_22, %int.convert_checked.loc4 [template = constants.%.29]
- // CHECK:STDOUT: %.loc4_24.6: init %tuple.type.2 = tuple_init (%.loc4_24.5) to file.%a_ref.var [template = constants.%tuple.1]
- // CHECK:STDOUT: %.loc4_25: init %tuple.type.2 = converted %.loc4_24.1, %.loc4_24.6 [template = constants.%tuple.1]
- // CHECK:STDOUT: assign file.%a_ref.var, %.loc4_25
- // CHECK:STDOUT: %.loc5_45: Core.IntLiteral = int_value 0 [template = constants.%.2]
- // CHECK:STDOUT: %.loc5_47.1: %tuple.type.3 = tuple_literal (%.loc5_45)
- // CHECK:STDOUT: %.loc5_50: Core.IntLiteral = int_value 1 [template = constants.%.33]
- // CHECK:STDOUT: %.loc5_51.1: %tuple.type.11 = tuple_literal (%.loc5_47.1, %.loc5_50)
- // CHECK:STDOUT: %.loc5_55: Core.IntLiteral = int_value 2 [template = constants.%.34]
- // CHECK:STDOUT: %.loc5_58: Core.IntLiteral = int_value 3 [template = constants.%.35]
- // CHECK:STDOUT: %.loc5_59.1: %tuple.type.12 = tuple_literal (%.loc5_55, %.loc5_58)
- // CHECK:STDOUT: %.loc5_60.1: %tuple.type.13 = tuple_literal (%.loc5_51.1, %.loc5_59.1)
- // CHECK:STDOUT: %.loc5_47.2: %Convert.type.2 = interface_witness_access constants.%.26, element0 [template = constants.%Convert.14]
- // CHECK:STDOUT: %.loc5_47.3: <bound method> = bound_method %.loc5_45, %.loc5_47.2 [template = constants.%.27]
- // CHECK:STDOUT: %.loc5_47.4: <specific function> = specific_function %.loc5_47.3, @Convert.2(constants.%.1) [template = constants.%.28]
- // CHECK:STDOUT: %int.convert_checked.loc5_47: init %i32 = call %.loc5_47.4(%.loc5_45) [template = constants.%.29]
- // CHECK:STDOUT: %.loc5_47.5: init %i32 = converted %.loc5_45, %int.convert_checked.loc5_47 [template = constants.%.29]
- // CHECK:STDOUT: %.loc5_60.2: ref %tuple.type.7 = tuple_access file.%b_ref.var, element0
- // CHECK:STDOUT: %.loc5_51.2: ref %tuple.type.2 = tuple_access %.loc5_60.2, element0
- // CHECK:STDOUT: %.loc5_47.6: init %tuple.type.2 = tuple_init (%.loc5_47.5) to %.loc5_51.2 [template = constants.%tuple.1]
- // CHECK:STDOUT: %.loc5_51.3: init %tuple.type.2 = converted %.loc5_47.1, %.loc5_47.6 [template = constants.%tuple.1]
- // CHECK:STDOUT: %.loc5_51.4: init %tuple.type.2 = initialize_from %.loc5_51.3 to %.loc5_51.2 [template = constants.%tuple.1]
- // CHECK:STDOUT: %.loc5_51.5: %Convert.type.2 = interface_witness_access constants.%.26, element0 [template = constants.%Convert.14]
- // CHECK:STDOUT: %.loc5_51.6: <bound method> = bound_method %.loc5_50, %.loc5_51.5 [template = constants.%.36]
- // CHECK:STDOUT: %.loc5_51.7: <specific function> = specific_function %.loc5_51.6, @Convert.2(constants.%.1) [template = constants.%.37]
- // CHECK:STDOUT: %int.convert_checked.loc5_51: init %i32 = call %.loc5_51.7(%.loc5_50) [template = constants.%.38]
- // CHECK:STDOUT: %.loc5_51.8: init %i32 = converted %.loc5_50, %int.convert_checked.loc5_51 [template = constants.%.38]
- // CHECK:STDOUT: %.loc5_51.9: ref %i32 = tuple_access %.loc5_60.2, element1
- // CHECK:STDOUT: %.loc5_51.10: init %i32 = initialize_from %.loc5_51.8 to %.loc5_51.9 [template = constants.%.38]
- // CHECK:STDOUT: %.loc5_51.11: init %tuple.type.7 = tuple_init (%.loc5_51.4, %.loc5_51.10) to %.loc5_60.2 [template = constants.%tuple.2]
- // CHECK:STDOUT: %.loc5_60.3: init %tuple.type.7 = converted %.loc5_51.1, %.loc5_51.11 [template = constants.%tuple.2]
- // CHECK:STDOUT: %.loc5_59.2: %Convert.type.2 = interface_witness_access constants.%.26, element0 [template = constants.%Convert.14]
- // CHECK:STDOUT: %.loc5_59.3: <bound method> = bound_method %.loc5_55, %.loc5_59.2 [template = constants.%.39]
- // CHECK:STDOUT: %.loc5_59.4: <specific function> = specific_function %.loc5_59.3, @Convert.2(constants.%.1) [template = constants.%.40]
- // CHECK:STDOUT: %int.convert_checked.loc5_59.1: init %i32 = call %.loc5_59.4(%.loc5_55) [template = constants.%.41]
- // CHECK:STDOUT: %.loc5_59.5: init %i32 = converted %.loc5_55, %int.convert_checked.loc5_59.1 [template = constants.%.41]
- // CHECK:STDOUT: %.loc5_60.4: ref %tuple.type.8 = tuple_access file.%b_ref.var, element1
- // CHECK:STDOUT: %.loc5_59.6: ref %i32 = tuple_access %.loc5_60.4, element0
- // CHECK:STDOUT: %.loc5_59.7: init %i32 = initialize_from %.loc5_59.5 to %.loc5_59.6 [template = constants.%.41]
- // CHECK:STDOUT: %.loc5_59.8: %Convert.type.2 = interface_witness_access constants.%.26, element0 [template = constants.%Convert.14]
- // CHECK:STDOUT: %.loc5_59.9: <bound method> = bound_method %.loc5_58, %.loc5_59.8 [template = constants.%.42]
- // CHECK:STDOUT: %.loc5_59.10: <specific function> = specific_function %.loc5_59.9, @Convert.2(constants.%.1) [template = constants.%.43]
- // CHECK:STDOUT: %int.convert_checked.loc5_59.2: init %i32 = call %.loc5_59.10(%.loc5_58) [template = constants.%.44]
- // CHECK:STDOUT: %.loc5_59.11: init %i32 = converted %.loc5_58, %int.convert_checked.loc5_59.2 [template = constants.%.44]
- // CHECK:STDOUT: %.loc5_59.12: ref %i32 = tuple_access %.loc5_60.4, element1
- // CHECK:STDOUT: %.loc5_59.13: init %i32 = initialize_from %.loc5_59.11 to %.loc5_59.12 [template = constants.%.44]
- // CHECK:STDOUT: %.loc5_59.14: init %tuple.type.8 = tuple_init (%.loc5_59.7, %.loc5_59.13) to %.loc5_60.4 [template = constants.%tuple.3]
- // CHECK:STDOUT: %.loc5_60.5: init %tuple.type.8 = converted %.loc5_59.1, %.loc5_59.14 [template = constants.%tuple.3]
- // CHECK:STDOUT: %.loc5_60.6: init %tuple.type.9 = tuple_init (%.loc5_60.3, %.loc5_60.5) to file.%b_ref.var [template = constants.%tuple.4]
- // CHECK:STDOUT: %.loc5_61: init %tuple.type.9 = converted %.loc5_60.1, %.loc5_60.6 [template = constants.%tuple.4]
- // CHECK:STDOUT: assign file.%b_ref.var, %.loc5_61
- // CHECK:STDOUT: return
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @C(constants.%X) {
- // CHECK:STDOUT: %X.loc7_9.2 => constants.%X
- // CHECK:STDOUT: %X.patt.loc7_9.2 => constants.%X
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @C(constants.%tuple.5) {
- // CHECK:STDOUT: %X.loc7_9.2 => constants.%tuple.5
- // CHECK:STDOUT: %X.patt.loc7_9.2 => constants.%tuple.5
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: --- implicit.impl.carbon
- // CHECK:STDOUT:
- // CHECK:STDOUT: constants {
- // CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic]
- // CHECK:STDOUT: %iN: type = int_type signed, %N [symbolic]
- // CHECK:STDOUT: %Dest: type = bind_symbolic_name Dest, 0 [symbolic]
- // CHECK:STDOUT: %ImplicitAs.type.2: type = facet_type <@ImplicitAs, @ImplicitAs(%Dest)> [symbolic]
- // CHECK:STDOUT: %Self.1: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.2) = bind_symbolic_name Self, 1 [symbolic]
- // CHECK:STDOUT: %Dest.patt: type = symbolic_binding_pattern Dest, 0 [symbolic]
- // CHECK:STDOUT: %ImplicitAs.type.3: type = facet_type <@ImplicitAs, @ImplicitAs(%iN)> [symbolic]
- // CHECK:STDOUT: %N.patt: Core.IntLiteral = symbolic_binding_pattern N, 0 [symbolic]
- // CHECK:STDOUT: %Self.2: %ImplicitAs.type.2 = bind_symbolic_name Self, 1 [symbolic]
- // CHECK:STDOUT: %Convert.type.1: type = fn_type @Convert.1, @ImplicitAs(%Dest) [symbolic]
- // CHECK:STDOUT: %Convert.1: %Convert.type.1 = struct_value () [symbolic]
- // CHECK:STDOUT: %.1: type = facet_access_type %Self.2 [symbolic]
- // CHECK:STDOUT: %.2: type = assoc_entity_type %ImplicitAs.type.2, %Convert.type.1 [symbolic]
- // CHECK:STDOUT: %.3: %.2 = assoc_entity element0, imports.%import_ref.11 [symbolic]
- // CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.2, @impl.1(%N) [symbolic]
- // CHECK:STDOUT: %Convert.2: %Convert.type.2 = struct_value () [symbolic]
- // CHECK:STDOUT: %.4: <witness> = interface_witness (%Convert.2) [symbolic]
- // CHECK:STDOUT: %.5: type = facet_access_type %Self.1 [symbolic]
- // CHECK:STDOUT: %uN: type = int_type unsigned, %N [symbolic]
- // CHECK:STDOUT: %ImplicitAs.type.4: type = facet_type <@ImplicitAs, @ImplicitAs(%uN)> [symbolic]
- // CHECK:STDOUT: %Convert.type.3: type = fn_type @Convert.3, @impl.2(%N) [symbolic]
- // CHECK:STDOUT: %Convert.3: %Convert.type.3 = struct_value () [symbolic]
- // CHECK:STDOUT: %.6: <witness> = interface_witness (%Convert.3) [symbolic]
- // CHECK:STDOUT: %ImplicitAs.type.5: type = facet_type <@ImplicitAs, @ImplicitAs(Core.IntLiteral)> [template]
- // CHECK:STDOUT: %Convert.type.4: type = fn_type @Convert.4, @impl.3(%N) [symbolic]
- // CHECK:STDOUT: %Convert.4: %Convert.type.4 = struct_value () [symbolic]
- // CHECK:STDOUT: %.7: <witness> = interface_witness (%Convert.4) [symbolic]
- // CHECK:STDOUT: %Convert.type.5: type = fn_type @Convert.1, @ImplicitAs(Core.IntLiteral) [template]
- // CHECK:STDOUT: %Convert.5: %Convert.type.5 = struct_value () [template]
- // CHECK:STDOUT: %.8: type = assoc_entity_type %ImplicitAs.type.5, %Convert.type.5 [template]
- // CHECK:STDOUT: %.9: %.8 = assoc_entity element0, imports.%import_ref.18 [template]
- // CHECK:STDOUT: %Convert.type.6: type = fn_type @Convert.5, @impl.4(%N) [symbolic]
- // CHECK:STDOUT: %Convert.6: %Convert.type.6 = struct_value () [symbolic]
- // CHECK:STDOUT: %.10: <witness> = interface_witness (%Convert.6) [symbolic]
- // CHECK:STDOUT: %As.type.2: type = facet_type <@As, @As(%Dest)> [symbolic]
- // CHECK:STDOUT: %Self.3: @As.%As.type (%As.type.2) = bind_symbolic_name Self, 1 [symbolic]
- // CHECK:STDOUT: %As.type.3: type = facet_type <@As, @As(%iN)> [symbolic]
- // CHECK:STDOUT: %Self.4: %As.type.2 = bind_symbolic_name Self, 1 [symbolic]
- // CHECK:STDOUT: %Convert.type.7: type = fn_type @Convert.6, @As(%Dest) [symbolic]
- // CHECK:STDOUT: %Convert.7: %Convert.type.7 = struct_value () [symbolic]
- // CHECK:STDOUT: %.11: type = facet_access_type %Self.4 [symbolic]
- // CHECK:STDOUT: %.12: type = assoc_entity_type %As.type.2, %Convert.type.7 [symbolic]
- // CHECK:STDOUT: %.13: %.12 = assoc_entity element0, imports.%import_ref.28 [symbolic]
- // CHECK:STDOUT: %Convert.type.8: type = fn_type @Convert.7, @impl.5(%N) [symbolic]
- // CHECK:STDOUT: %Convert.8: %Convert.type.8 = struct_value () [symbolic]
- // CHECK:STDOUT: %.14: <witness> = interface_witness (%Convert.8) [symbolic]
- // CHECK:STDOUT: %.15: type = facet_access_type %Self.3 [symbolic]
- // CHECK:STDOUT: %As.type.4: type = facet_type <@As, @As(%uN)> [symbolic]
- // CHECK:STDOUT: %Convert.type.9: type = fn_type @Convert.8, @impl.6(%N) [symbolic]
- // CHECK:STDOUT: %Convert.9: %Convert.type.9 = struct_value () [symbolic]
- // CHECK:STDOUT: %.16: <witness> = interface_witness (%Convert.9) [symbolic]
- // CHECK:STDOUT: %As.type.5: type = facet_type <@As, @As(Core.IntLiteral)> [template]
- // CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.9, @impl.7(%N) [symbolic]
- // CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [symbolic]
- // CHECK:STDOUT: %.17: <witness> = interface_witness (%Convert.10) [symbolic]
- // CHECK:STDOUT: %Convert.type.11: type = fn_type @Convert.6, @As(Core.IntLiteral) [template]
- // CHECK:STDOUT: %Convert.11: %Convert.type.11 = struct_value () [template]
- // CHECK:STDOUT: %.18: type = assoc_entity_type %As.type.5, %Convert.type.11 [template]
- // CHECK:STDOUT: %.19: %.18 = assoc_entity element0, imports.%import_ref.35 [template]
- // CHECK:STDOUT: %Convert.type.12: type = fn_type @Convert.10, @impl.8(%N) [symbolic]
- // CHECK:STDOUT: %Convert.12: %Convert.type.12 = struct_value () [symbolic]
- // CHECK:STDOUT: %.20: <witness> = interface_witness (%Convert.12) [symbolic]
- // CHECK:STDOUT: %.21: Core.IntLiteral = int_value 32 [template]
- // CHECK:STDOUT: %Int.type: type = fn_type @Int [template]
- // CHECK:STDOUT: %Int: %Int.type = struct_value () [template]
- // CHECK:STDOUT: %i32: type = int_type signed, %.21 [template]
- // CHECK:STDOUT: %tuple.type.1: type = tuple_type (type) [template]
- // CHECK:STDOUT: %tuple.type.2: type = tuple_type (%i32) [template]
- // CHECK:STDOUT: %tuple.type.3: type = tuple_type (%tuple.type.1, type) [template]
- // CHECK:STDOUT: %tuple.type.4: type = tuple_type (type, type) [template]
- // CHECK:STDOUT: %tuple.type.5: type = tuple_type (%tuple.type.3, %tuple.type.4) [template]
- // CHECK:STDOUT: %tuple.type.6: type = tuple_type (%tuple.type.2, %i32) [template]
- // CHECK:STDOUT: %tuple.type.7: type = tuple_type (%i32, %i32) [template]
- // CHECK:STDOUT: %tuple.type.8: type = tuple_type (%tuple.type.6, %tuple.type.7) [template]
- // CHECK:STDOUT: %C.type: type = generic_class_type @C [template]
- // CHECK:STDOUT: %C.1: %C.type = struct_value () [template]
- // CHECK:STDOUT: %X: %tuple.type.7 = bind_symbolic_name X, 0 [symbolic]
- // CHECK:STDOUT: %X.patt: %tuple.type.7 = symbolic_binding_pattern X, 0 [symbolic]
- // CHECK:STDOUT: %.27: Core.IntLiteral = int_value 1 [template]
- // CHECK:STDOUT: %.28: Core.IntLiteral = int_value 2 [template]
- // CHECK:STDOUT: %tuple.type.10: type = tuple_type (Core.IntLiteral, Core.IntLiteral) [template]
- // CHECK:STDOUT: %ImplicitAs.type.6: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [template]
- // CHECK:STDOUT: %Convert.type.13: type = fn_type @Convert.1, @ImplicitAs(%i32) [template]
- // CHECK:STDOUT: %Convert.13: %Convert.type.13 = struct_value () [template]
- // CHECK:STDOUT: %.29: type = assoc_entity_type %ImplicitAs.type.6, %Convert.type.13 [template]
- // CHECK:STDOUT: %.30: %.29 = assoc_entity element0, imports.%import_ref.11 [template]
- // CHECK:STDOUT: %.31: %.2 = assoc_entity element0, imports.%import_ref.42 [symbolic]
- // CHECK:STDOUT: %Convert.type.14: type = fn_type @Convert.2, @impl.1(%.21) [template]
- // CHECK:STDOUT: %Convert.14: %Convert.type.14 = struct_value () [template]
- // CHECK:STDOUT: %.32: <witness> = interface_witness (%Convert.14) [template]
- // CHECK:STDOUT: %.33: <bound method> = bound_method %.27, %Convert.14 [template]
- // CHECK:STDOUT: %.34: <specific function> = specific_function %.33, @Convert.2(%.21) [template]
- // CHECK:STDOUT: %.35: %i32 = int_value 1 [template]
- // CHECK:STDOUT: %.36: <bound method> = bound_method %.28, %Convert.14 [template]
- // CHECK:STDOUT: %.37: <specific function> = specific_function %.36, @Convert.2(%.21) [template]
- // CHECK:STDOUT: %.38: %i32 = int_value 2 [template]
- // CHECK:STDOUT: %tuple: %tuple.type.7 = tuple_value (%.35, %.38) [template]
- // CHECK:STDOUT: %C.3: type = class_type @C, @C(%tuple) [template]
- // CHECK:STDOUT: %F.type: type = fn_type @F [template]
- // CHECK:STDOUT: %F: %F.type = struct_value () [template]
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: imports {
- // CHECK:STDOUT: %import_ref.1: ref %tuple.type.2 = import_ref Implicit//default, inst+24, loaded
- // CHECK:STDOUT: %import_ref.2: ref %tuple.type.8 = import_ref Implicit//default, inst+370, loaded
- // CHECK:STDOUT: %import_ref.3: %C.type = import_ref Implicit//default, inst+453, loaded [template = constants.%C.1]
- // CHECK:STDOUT: %import_ref.4: %F.type = import_ref Implicit//default, inst+487, loaded [template = constants.%F]
- // CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [template] {
- // CHECK:STDOUT: .Int = %import_ref.39
- // CHECK:STDOUT: .ImplicitAs = %import_ref.41
- // CHECK:STDOUT: import Core//prelude
- // CHECK:STDOUT: import Core//prelude/...
- // CHECK:STDOUT: }
- // CHECK:STDOUT: %import_ref.5 = import_ref Implicit//default, inst+40, unloaded
- // CHECK:STDOUT: %import_ref.6: @ImplicitAs.%.1 (%.2) = import_ref Implicit//default, inst+41, loaded [symbolic = @ImplicitAs.%.2 (constants.%.31)]
- // CHECK:STDOUT: %import_ref.7 = import_ref Implicit//default, inst+42, unloaded
- // CHECK:STDOUT: %import_ref.8: type = import_ref Implicit//default, inst+83, loaded [template = Core.IntLiteral]
- // CHECK:STDOUT: %import_ref.9: type = import_ref Implicit//default, inst+84, loaded [symbolic = @impl.1.%ImplicitAs.type (constants.%ImplicitAs.type.3)]
- // CHECK:STDOUT: %import_ref.10: <witness> = import_ref Implicit//default, inst+85, loaded [symbolic = @impl.1.%.1 (constants.%.4)]
- // CHECK:STDOUT: %import_ref.11 = import_ref Implicit//default, inst+56, unloaded
- // CHECK:STDOUT: %import_ref.12: type = import_ref Implicit//default, inst+109, loaded [template = Core.IntLiteral]
- // CHECK:STDOUT: %import_ref.13: type = import_ref Implicit//default, inst+110, loaded [symbolic = @impl.2.%ImplicitAs.type (constants.%ImplicitAs.type.4)]
- // CHECK:STDOUT: %import_ref.14 = import_ref Implicit//default, inst+111, unloaded
- // CHECK:STDOUT: %import_ref.15: type = import_ref Implicit//default, inst+134, loaded [symbolic = @impl.3.%iN (constants.%iN)]
- // CHECK:STDOUT: %import_ref.16: type = import_ref Implicit//default, inst+135, loaded [template = constants.%ImplicitAs.type.5]
- // CHECK:STDOUT: %import_ref.17 = import_ref Implicit//default, inst+136, unloaded
- // CHECK:STDOUT: %import_ref.19: type = import_ref Implicit//default, inst+162, loaded [symbolic = @impl.4.%uN (constants.%uN)]
- // CHECK:STDOUT: %import_ref.20: type = import_ref Implicit//default, inst+163, loaded [template = constants.%ImplicitAs.type.5]
- // CHECK:STDOUT: %import_ref.21 = import_ref Implicit//default, inst+164, unloaded
- // CHECK:STDOUT: %import_ref.22 = import_ref Implicit//default, inst+190, unloaded
- // CHECK:STDOUT: %import_ref.23 = import_ref Implicit//default, inst+191, unloaded
- // CHECK:STDOUT: %import_ref.24 = import_ref Implicit//default, inst+192, unloaded
- // CHECK:STDOUT: %import_ref.25: type = import_ref Implicit//default, inst+196, loaded [template = Core.IntLiteral]
- // CHECK:STDOUT: %import_ref.26: type = import_ref Implicit//default, inst+197, loaded [symbolic = @impl.5.%As.type (constants.%As.type.3)]
- // CHECK:STDOUT: %import_ref.27 = import_ref Implicit//default, inst+198, unloaded
- // CHECK:STDOUT: %import_ref.28 = import_ref Implicit//default, inst+212, unloaded
- // CHECK:STDOUT: %import_ref.29: type = import_ref Implicit//default, inst+247, loaded [template = Core.IntLiteral]
- // CHECK:STDOUT: %import_ref.30: type = import_ref Implicit//default, inst+248, loaded [symbolic = @impl.6.%As.type (constants.%As.type.4)]
- // CHECK:STDOUT: %import_ref.31 = import_ref Implicit//default, inst+249, unloaded
- // CHECK:STDOUT: %import_ref.32: type = import_ref Implicit//default, inst+272, loaded [symbolic = @impl.7.%iN (constants.%iN)]
- // CHECK:STDOUT: %import_ref.33: type = import_ref Implicit//default, inst+273, loaded [template = constants.%As.type.5]
- // CHECK:STDOUT: %import_ref.34 = import_ref Implicit//default, inst+274, unloaded
- // CHECK:STDOUT: %import_ref.36: type = import_ref Implicit//default, inst+300, loaded [symbolic = @impl.8.%uN (constants.%uN)]
- // CHECK:STDOUT: %import_ref.37: type = import_ref Implicit//default, inst+301, loaded [template = constants.%As.type.5]
- // CHECK:STDOUT: %import_ref.38 = import_ref Implicit//default, inst+302, unloaded
- // CHECK:STDOUT: %import_ref.40 = import_ref Implicit//default, inst+458, unloaded
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: file {
- // CHECK:STDOUT: package: <namespace> = namespace [template] {
- // CHECK:STDOUT: .a_ref = imports.%import_ref.1
- // CHECK:STDOUT: .b_ref = imports.%import_ref.2
- // CHECK:STDOUT: .C = imports.%import_ref.3
- // CHECK:STDOUT: .F = imports.%import_ref.4
- // CHECK:STDOUT: .Core = imports.%Core
- // CHECK:STDOUT: .a = %a
- // CHECK:STDOUT: .b = %b
- // CHECK:STDOUT: .c = %c
- // CHECK:STDOUT: }
- // CHECK:STDOUT: %Implicit.import = import Implicit
- // CHECK:STDOUT: %default.import = import <invalid>
- // CHECK:STDOUT: %Core.import = import Core
- // CHECK:STDOUT: %.loc4_9: Core.IntLiteral = int_value 32 [template = constants.%.21]
- // CHECK:STDOUT: %int.make_type_signed.loc4: init type = call constants.%Int(%.loc4_9) [template = constants.%i32]
- // CHECK:STDOUT: %.loc4_13.1: %tuple.type.1 = tuple_literal (%int.make_type_signed.loc4)
- // CHECK:STDOUT: %.loc4_13.2: type = value_of_initializer %int.make_type_signed.loc4 [template = constants.%i32]
- // CHECK:STDOUT: %.loc4_13.3: type = converted %int.make_type_signed.loc4, %.loc4_13.2 [template = constants.%i32]
- // CHECK:STDOUT: %.loc4_13.4: type = converted %.loc4_13.1, constants.%tuple.type.2 [template = constants.%tuple.type.2]
- // CHECK:STDOUT: %a.var: ref %tuple.type.2 = var a
- // CHECK:STDOUT: %a: ref %tuple.type.2 = bind_name a, %a.var
- // CHECK:STDOUT: %.loc5_11: Core.IntLiteral = int_value 32 [template = constants.%.21]
- // CHECK:STDOUT: %int.make_type_signed.loc5_11: init type = call constants.%Int(%.loc5_11) [template = constants.%i32]
- // CHECK:STDOUT: %.loc5_15: %tuple.type.1 = tuple_literal (%int.make_type_signed.loc5_11)
- // CHECK:STDOUT: %.loc5_18: Core.IntLiteral = int_value 32 [template = constants.%.21]
- // CHECK:STDOUT: %int.make_type_signed.loc5_18: init type = call constants.%Int(%.loc5_18) [template = constants.%i32]
- // CHECK:STDOUT: %.loc5_21: %tuple.type.3 = tuple_literal (%.loc5_15, %int.make_type_signed.loc5_18)
- // CHECK:STDOUT: %.loc5_25: Core.IntLiteral = int_value 32 [template = constants.%.21]
- // CHECK:STDOUT: %int.make_type_signed.loc5_25: init type = call constants.%Int(%.loc5_25) [template = constants.%i32]
- // CHECK:STDOUT: %.loc5_30: Core.IntLiteral = int_value 32 [template = constants.%.21]
- // CHECK:STDOUT: %int.make_type_signed.loc5_30: init type = call constants.%Int(%.loc5_30) [template = constants.%i32]
- // CHECK:STDOUT: %.loc5_33: %tuple.type.4 = tuple_literal (%int.make_type_signed.loc5_25, %int.make_type_signed.loc5_30)
- // CHECK:STDOUT: %.loc5_34.1: %tuple.type.5 = tuple_literal (%.loc5_21, %.loc5_33)
- // CHECK:STDOUT: %.loc5_34.2: type = value_of_initializer %int.make_type_signed.loc5_11 [template = constants.%i32]
- // CHECK:STDOUT: %.loc5_34.3: type = converted %int.make_type_signed.loc5_11, %.loc5_34.2 [template = constants.%i32]
- // CHECK:STDOUT: %.loc5_34.4: type = converted %.loc5_15, constants.%tuple.type.2 [template = constants.%tuple.type.2]
- // CHECK:STDOUT: %.loc5_34.5: type = value_of_initializer %int.make_type_signed.loc5_18 [template = constants.%i32]
- // CHECK:STDOUT: %.loc5_34.6: type = converted %int.make_type_signed.loc5_18, %.loc5_34.5 [template = constants.%i32]
- // CHECK:STDOUT: %.loc5_34.7: type = converted %.loc5_21, constants.%tuple.type.6 [template = constants.%tuple.type.6]
- // CHECK:STDOUT: %.loc5_34.8: type = value_of_initializer %int.make_type_signed.loc5_25 [template = constants.%i32]
- // CHECK:STDOUT: %.loc5_34.9: type = converted %int.make_type_signed.loc5_25, %.loc5_34.8 [template = constants.%i32]
- // CHECK:STDOUT: %.loc5_34.10: type = value_of_initializer %int.make_type_signed.loc5_30 [template = constants.%i32]
- // CHECK:STDOUT: %.loc5_34.11: type = converted %int.make_type_signed.loc5_30, %.loc5_34.10 [template = constants.%i32]
- // CHECK:STDOUT: %.loc5_34.12: type = converted %.loc5_33, constants.%tuple.type.7 [template = constants.%tuple.type.7]
- // CHECK:STDOUT: %.loc5_34.13: type = converted %.loc5_34.1, constants.%tuple.type.8 [template = constants.%tuple.type.8]
- // CHECK:STDOUT: %b.var: ref %tuple.type.8 = var b
- // CHECK:STDOUT: %b: ref %tuple.type.8 = bind_name b, %b.var
- // CHECK:STDOUT: %C.ref: %C.type = name_ref C, imports.%import_ref.3 [template = constants.%C.1]
- // CHECK:STDOUT: %.loc6_11: Core.IntLiteral = int_value 1 [template = constants.%.27]
- // CHECK:STDOUT: %.loc6_14: Core.IntLiteral = int_value 2 [template = constants.%.28]
- // CHECK:STDOUT: %.loc6_15.1: %tuple.type.10 = tuple_literal (%.loc6_11, %.loc6_14)
- // CHECK:STDOUT: %.loc6_15.2: %Convert.type.13 = interface_witness_access constants.%.32, element0 [template = constants.%Convert.14]
- // CHECK:STDOUT: %.loc6_15.3: <bound method> = bound_method %.loc6_11, %.loc6_15.2 [template = constants.%.33]
- // CHECK:STDOUT: %.loc6_15.4: <specific function> = specific_function %.loc6_15.3, @Convert.2(constants.%.21) [template = constants.%.34]
- // CHECK:STDOUT: %int.convert_checked.loc6_15.1: init %i32 = call %.loc6_15.4(%.loc6_11) [template = constants.%.35]
- // CHECK:STDOUT: %.loc6_15.5: %i32 = value_of_initializer %int.convert_checked.loc6_15.1 [template = constants.%.35]
- // CHECK:STDOUT: %.loc6_15.6: %i32 = converted %.loc6_11, %.loc6_15.5 [template = constants.%.35]
- // CHECK:STDOUT: %.loc6_15.7: %Convert.type.13 = interface_witness_access constants.%.32, element0 [template = constants.%Convert.14]
- // CHECK:STDOUT: %.loc6_15.8: <bound method> = bound_method %.loc6_14, %.loc6_15.7 [template = constants.%.36]
- // CHECK:STDOUT: %.loc6_15.9: <specific function> = specific_function %.loc6_15.8, @Convert.2(constants.%.21) [template = constants.%.37]
- // CHECK:STDOUT: %int.convert_checked.loc6_15.2: init %i32 = call %.loc6_15.9(%.loc6_14) [template = constants.%.38]
- // CHECK:STDOUT: %.loc6_15.10: %i32 = value_of_initializer %int.convert_checked.loc6_15.2 [template = constants.%.38]
- // CHECK:STDOUT: %.loc6_15.11: %i32 = converted %.loc6_14, %.loc6_15.10 [template = constants.%.38]
- // CHECK:STDOUT: %tuple: %tuple.type.7 = tuple_value (%.loc6_15.6, %.loc6_15.11) [template = constants.%tuple]
- // CHECK:STDOUT: %.loc6_9: %tuple.type.7 = converted %.loc6_15.1, %tuple [template = constants.%tuple]
- // CHECK:STDOUT: %C: type = class_type @C, @C(constants.%tuple) [template = constants.%C.3]
- // CHECK:STDOUT: %c.var: ref %C.3 = var c
- // CHECK:STDOUT: %c: ref %C.3 = bind_name c, %c.var
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: generic interface @ImplicitAs(constants.%Dest: type) {
- // CHECK:STDOUT: %Dest: type = bind_symbolic_name Dest, 0 [symbolic = %Dest (constants.%Dest)]
- // CHECK:STDOUT: %Dest.patt: type = symbolic_binding_pattern Dest, 0 [symbolic = %Dest.patt (constants.%Dest.patt)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(%Dest)> [symbolic = %ImplicitAs.type (constants.%ImplicitAs.type.2)]
- // CHECK:STDOUT: %Self: %ImplicitAs.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.2)]
- // CHECK:STDOUT: %Convert.type: type = fn_type @Convert.1, @ImplicitAs(%Dest) [symbolic = %Convert.type (constants.%Convert.type.1)]
- // CHECK:STDOUT: %Convert: @ImplicitAs.%Convert.type (%Convert.type.1) = struct_value () [symbolic = %Convert (constants.%Convert.1)]
- // CHECK:STDOUT: %.1: type = assoc_entity_type @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.2), @ImplicitAs.%Convert.type (%Convert.type.1) [symbolic = %.1 (constants.%.2)]
- // CHECK:STDOUT: %.2: @ImplicitAs.%.1 (%.2) = assoc_entity element0, imports.%import_ref.11 [symbolic = %.2 (constants.%.3)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: interface {
- // CHECK:STDOUT: !members:
- // CHECK:STDOUT: .Self = imports.%import_ref.5
- // CHECK:STDOUT: .Convert = imports.%import_ref.6
- // CHECK:STDOUT: witness = (imports.%import_ref.7)
- // CHECK:STDOUT: }
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: generic interface @As(constants.%Dest: type) {
- // CHECK:STDOUT: %Dest: type = bind_symbolic_name Dest, 0 [symbolic = %Dest (constants.%Dest)]
- // CHECK:STDOUT: %Dest.patt: type = symbolic_binding_pattern Dest, 0 [symbolic = %Dest.patt (constants.%Dest.patt)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT: %As.type: type = facet_type <@As, @As(%Dest)> [symbolic = %As.type (constants.%As.type.2)]
- // CHECK:STDOUT: %Self: %As.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.4)]
- // CHECK:STDOUT: %Convert.type: type = fn_type @Convert.6, @As(%Dest) [symbolic = %Convert.type (constants.%Convert.type.7)]
- // CHECK:STDOUT: %Convert: @As.%Convert.type (%Convert.type.7) = struct_value () [symbolic = %Convert (constants.%Convert.7)]
- // CHECK:STDOUT: %.1: type = assoc_entity_type @As.%As.type (%As.type.2), @As.%Convert.type (%Convert.type.7) [symbolic = %.1 (constants.%.12)]
- // CHECK:STDOUT: %.2: @As.%.1 (%.12) = assoc_entity element0, imports.%import_ref.28 [symbolic = %.2 (constants.%.13)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: interface {
- // CHECK:STDOUT: !members:
- // CHECK:STDOUT: .Self = imports.%import_ref.22
- // CHECK:STDOUT: .Convert = imports.%import_ref.23
- // CHECK:STDOUT: witness = (imports.%import_ref.24)
- // CHECK:STDOUT: }
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: generic impl @impl.1(constants.%N: Core.IntLiteral) {
- // CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N (constants.%N)]
- // CHECK:STDOUT: %N.patt: Core.IntLiteral = symbolic_binding_pattern N, 0 [symbolic = %N.patt (constants.%N.patt)]
- // CHECK:STDOUT: %iN: type = int_type signed, %N [symbolic = %iN (constants.%iN)]
- // CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(%iN)> [symbolic = %ImplicitAs.type (constants.%ImplicitAs.type.3)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT: %Convert.type: type = fn_type @Convert.2, @impl.1(%N) [symbolic = %Convert.type (constants.%Convert.type.2)]
- // CHECK:STDOUT: %Convert: @impl.1.%Convert.type (%Convert.type.2) = struct_value () [symbolic = %Convert (constants.%Convert.2)]
- // CHECK:STDOUT: %.1: <witness> = interface_witness (%Convert) [symbolic = %.1 (constants.%.4)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: impl: imports.%import_ref.8 as imports.%import_ref.9 {
- // CHECK:STDOUT: !members:
- // CHECK:STDOUT: witness = imports.%import_ref.10
- // CHECK:STDOUT: }
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: generic impl @impl.2(constants.%N: Core.IntLiteral) {
- // CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N (constants.%N)]
- // CHECK:STDOUT: %N.patt: Core.IntLiteral = symbolic_binding_pattern N, 0 [symbolic = %N.patt (constants.%N.patt)]
- // CHECK:STDOUT: %uN: type = int_type unsigned, %N [symbolic = %uN (constants.%uN)]
- // CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(%uN)> [symbolic = %ImplicitAs.type (constants.%ImplicitAs.type.4)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT: %Convert.type: type = fn_type @Convert.3, @impl.2(%N) [symbolic = %Convert.type (constants.%Convert.type.3)]
- // CHECK:STDOUT: %Convert: @impl.2.%Convert.type (%Convert.type.3) = struct_value () [symbolic = %Convert (constants.%Convert.3)]
- // CHECK:STDOUT: %.1: <witness> = interface_witness (%Convert) [symbolic = %.1 (constants.%.6)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: impl: imports.%import_ref.12 as imports.%import_ref.13 {
- // CHECK:STDOUT: !members:
- // CHECK:STDOUT: witness = imports.%import_ref.14
- // CHECK:STDOUT: }
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: generic impl @impl.3(constants.%N: Core.IntLiteral) {
- // CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N (constants.%N)]
- // CHECK:STDOUT: %N.patt: Core.IntLiteral = symbolic_binding_pattern N, 0 [symbolic = %N.patt (constants.%N.patt)]
- // CHECK:STDOUT: %iN: type = int_type signed, %N [symbolic = %iN (constants.%iN)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT: %Convert.type: type = fn_type @Convert.4, @impl.3(%N) [symbolic = %Convert.type (constants.%Convert.type.4)]
- // CHECK:STDOUT: %Convert: @impl.3.%Convert.type (%Convert.type.4) = struct_value () [symbolic = %Convert (constants.%Convert.4)]
- // CHECK:STDOUT: %.1: <witness> = interface_witness (%Convert) [symbolic = %.1 (constants.%.7)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: impl: imports.%import_ref.15 as imports.%import_ref.16 {
- // CHECK:STDOUT: !members:
- // CHECK:STDOUT: witness = imports.%import_ref.17
- // CHECK:STDOUT: }
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: generic impl @impl.4(constants.%N: Core.IntLiteral) {
- // CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N (constants.%N)]
- // CHECK:STDOUT: %N.patt: Core.IntLiteral = symbolic_binding_pattern N, 0 [symbolic = %N.patt (constants.%N.patt)]
- // CHECK:STDOUT: %uN: type = int_type unsigned, %N [symbolic = %uN (constants.%uN)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT: %Convert.type: type = fn_type @Convert.5, @impl.4(%N) [symbolic = %Convert.type (constants.%Convert.type.6)]
- // CHECK:STDOUT: %Convert: @impl.4.%Convert.type (%Convert.type.6) = struct_value () [symbolic = %Convert (constants.%Convert.6)]
- // CHECK:STDOUT: %.1: <witness> = interface_witness (%Convert) [symbolic = %.1 (constants.%.10)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: impl: imports.%import_ref.19 as imports.%import_ref.20 {
- // CHECK:STDOUT: !members:
- // CHECK:STDOUT: witness = imports.%import_ref.21
- // CHECK:STDOUT: }
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: generic impl @impl.5(constants.%N: Core.IntLiteral) {
- // CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N (constants.%N)]
- // CHECK:STDOUT: %N.patt: Core.IntLiteral = symbolic_binding_pattern N, 0 [symbolic = %N.patt (constants.%N.patt)]
- // CHECK:STDOUT: %iN: type = int_type signed, %N [symbolic = %iN (constants.%iN)]
- // CHECK:STDOUT: %As.type: type = facet_type <@As, @As(%iN)> [symbolic = %As.type (constants.%As.type.3)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT: %Convert.type: type = fn_type @Convert.7, @impl.5(%N) [symbolic = %Convert.type (constants.%Convert.type.8)]
- // CHECK:STDOUT: %Convert: @impl.5.%Convert.type (%Convert.type.8) = struct_value () [symbolic = %Convert (constants.%Convert.8)]
- // CHECK:STDOUT: %.1: <witness> = interface_witness (%Convert) [symbolic = %.1 (constants.%.14)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: impl: imports.%import_ref.25 as imports.%import_ref.26 {
- // CHECK:STDOUT: !members:
- // CHECK:STDOUT: witness = imports.%import_ref.27
- // CHECK:STDOUT: }
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: generic impl @impl.6(constants.%N: Core.IntLiteral) {
- // CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N (constants.%N)]
- // CHECK:STDOUT: %N.patt: Core.IntLiteral = symbolic_binding_pattern N, 0 [symbolic = %N.patt (constants.%N.patt)]
- // CHECK:STDOUT: %uN: type = int_type unsigned, %N [symbolic = %uN (constants.%uN)]
- // CHECK:STDOUT: %As.type: type = facet_type <@As, @As(%uN)> [symbolic = %As.type (constants.%As.type.4)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT: %Convert.type: type = fn_type @Convert.8, @impl.6(%N) [symbolic = %Convert.type (constants.%Convert.type.9)]
- // CHECK:STDOUT: %Convert: @impl.6.%Convert.type (%Convert.type.9) = struct_value () [symbolic = %Convert (constants.%Convert.9)]
- // CHECK:STDOUT: %.1: <witness> = interface_witness (%Convert) [symbolic = %.1 (constants.%.16)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: impl: imports.%import_ref.29 as imports.%import_ref.30 {
- // CHECK:STDOUT: !members:
- // CHECK:STDOUT: witness = imports.%import_ref.31
- // CHECK:STDOUT: }
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: generic impl @impl.7(constants.%N: Core.IntLiteral) {
- // CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N (constants.%N)]
- // CHECK:STDOUT: %N.patt: Core.IntLiteral = symbolic_binding_pattern N, 0 [symbolic = %N.patt (constants.%N.patt)]
- // CHECK:STDOUT: %iN: type = int_type signed, %N [symbolic = %iN (constants.%iN)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT: %Convert.type: type = fn_type @Convert.9, @impl.7(%N) [symbolic = %Convert.type (constants.%Convert.type.10)]
- // CHECK:STDOUT: %Convert: @impl.7.%Convert.type (%Convert.type.10) = struct_value () [symbolic = %Convert (constants.%Convert.10)]
- // CHECK:STDOUT: %.1: <witness> = interface_witness (%Convert) [symbolic = %.1 (constants.%.17)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: impl: imports.%import_ref.32 as imports.%import_ref.33 {
- // CHECK:STDOUT: !members:
- // CHECK:STDOUT: witness = imports.%import_ref.34
- // CHECK:STDOUT: }
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: generic impl @impl.8(constants.%N: Core.IntLiteral) {
- // CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N (constants.%N)]
- // CHECK:STDOUT: %N.patt: Core.IntLiteral = symbolic_binding_pattern N, 0 [symbolic = %N.patt (constants.%N.patt)]
- // CHECK:STDOUT: %uN: type = int_type unsigned, %N [symbolic = %uN (constants.%uN)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT: %Convert.type: type = fn_type @Convert.10, @impl.8(%N) [symbolic = %Convert.type (constants.%Convert.type.12)]
- // CHECK:STDOUT: %Convert: @impl.8.%Convert.type (%Convert.type.12) = struct_value () [symbolic = %Convert (constants.%Convert.12)]
- // CHECK:STDOUT: %.1: <witness> = interface_witness (%Convert) [symbolic = %.1 (constants.%.20)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: impl: imports.%import_ref.36 as imports.%import_ref.37 {
- // CHECK:STDOUT: !members:
- // CHECK:STDOUT: witness = imports.%import_ref.38
- // CHECK:STDOUT: }
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: generic class @C(constants.%X: %tuple.type.7) {
- // CHECK:STDOUT: %X: %tuple.type.7 = bind_symbolic_name X, 0 [symbolic = %X (constants.%X)]
- // CHECK:STDOUT: %X.patt: %tuple.type.7 = symbolic_binding_pattern X, 0 [symbolic = %X.patt (constants.%X.patt)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT:
- // CHECK:STDOUT: class {
- // CHECK:STDOUT: !members:
- // CHECK:STDOUT: .Self = imports.%import_ref.40
- // CHECK:STDOUT: }
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: generic fn @Convert.1(constants.%Dest: type, constants.%Self.1: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.2)) {
- // CHECK:STDOUT: %Dest: type = bind_symbolic_name Dest, 0 [symbolic = %Dest (constants.%Dest)]
- // CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(%Dest)> [symbolic = %ImplicitAs.type (constants.%ImplicitAs.type.2)]
- // CHECK:STDOUT: %Self: %ImplicitAs.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.2)]
- // CHECK:STDOUT: %.1: type = facet_access_type %Self [symbolic = %.1 (constants.%.1)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: fn[%self.param_patt: @Convert.1.%.1 (%.1)]() -> @Convert.1.%Dest (%Dest);
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: generic fn @Convert.2(constants.%N: Core.IntLiteral) {
- // CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N (constants.%N)]
- // CHECK:STDOUT: %iN: type = int_type signed, %N [symbolic = %iN (constants.%iN)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT:
- // CHECK:STDOUT: fn[%self.param_patt: Core.IntLiteral]() -> @Convert.2.%iN (%iN) = "int.convert_checked";
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: generic fn @Convert.3(constants.%N: Core.IntLiteral) {
- // CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N (constants.%N)]
- // CHECK:STDOUT: %uN: type = int_type unsigned, %N [symbolic = %uN (constants.%uN)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT:
- // CHECK:STDOUT: fn[%self.param_patt: Core.IntLiteral]() -> @Convert.3.%uN (%uN) = "int.convert_checked";
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: generic fn @Convert.4(constants.%N: Core.IntLiteral) {
- // CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N (constants.%N)]
- // CHECK:STDOUT: %iN: type = int_type signed, %N [symbolic = %iN (constants.%iN)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT:
- // CHECK:STDOUT: fn[%self.param_patt: @Convert.4.%iN (%iN)]() -> Core.IntLiteral = "int.convert_checked";
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: generic fn @Convert.5(constants.%N: Core.IntLiteral) {
- // CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N (constants.%N)]
- // CHECK:STDOUT: %uN: type = int_type unsigned, %N [symbolic = %uN (constants.%uN)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT:
- // CHECK:STDOUT: fn[%self.param_patt: @Convert.5.%uN (%uN)]() -> Core.IntLiteral = "int.convert_checked";
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: generic fn @Convert.6(constants.%Dest: type, constants.%Self.3: @As.%As.type (%As.type.2)) {
- // CHECK:STDOUT: %Dest: type = bind_symbolic_name Dest, 0 [symbolic = %Dest (constants.%Dest)]
- // CHECK:STDOUT: %As.type: type = facet_type <@As, @As(%Dest)> [symbolic = %As.type (constants.%As.type.2)]
- // CHECK:STDOUT: %Self: %As.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.4)]
- // CHECK:STDOUT: %.1: type = facet_access_type %Self [symbolic = %.1 (constants.%.11)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: fn[%self.param_patt: @Convert.6.%.1 (%.11)]() -> @Convert.6.%Dest (%Dest);
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: generic fn @Convert.7(constants.%N: Core.IntLiteral) {
- // CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N (constants.%N)]
- // CHECK:STDOUT: %iN: type = int_type signed, %N [symbolic = %iN (constants.%iN)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT:
- // CHECK:STDOUT: fn[%self.param_patt: Core.IntLiteral]() -> @Convert.7.%iN (%iN) = "int.convert_checked";
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: generic fn @Convert.8(constants.%N: Core.IntLiteral) {
- // CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N (constants.%N)]
- // CHECK:STDOUT: %uN: type = int_type unsigned, %N [symbolic = %uN (constants.%uN)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT:
- // CHECK:STDOUT: fn[%self.param_patt: Core.IntLiteral]() -> @Convert.8.%uN (%uN) = "int.convert_checked";
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: generic fn @Convert.9(constants.%N: Core.IntLiteral) {
- // CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N (constants.%N)]
- // CHECK:STDOUT: %iN: type = int_type signed, %N [symbolic = %iN (constants.%iN)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT:
- // CHECK:STDOUT: fn[%self.param_patt: @Convert.9.%iN (%iN)]() -> Core.IntLiteral = "int.convert_checked";
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: generic fn @Convert.10(constants.%N: Core.IntLiteral) {
- // CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N (constants.%N)]
- // CHECK:STDOUT: %uN: type = int_type unsigned, %N [symbolic = %uN (constants.%uN)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT:
- // CHECK:STDOUT: fn[%self.param_patt: @Convert.10.%uN (%uN)]() -> Core.IntLiteral = "int.convert_checked";
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: fn @F() -> %C.3;
- // CHECK:STDOUT:
- // CHECK:STDOUT: fn @__global_init() {
- // CHECK:STDOUT: !entry:
- // CHECK:STDOUT: %a_ref.ref: ref %tuple.type.2 = name_ref a_ref, imports.%import_ref.1
- // CHECK:STDOUT: %.loc4_17.1: ref %i32 = tuple_access %a_ref.ref, element0
- // CHECK:STDOUT: %.loc4_17.2: %i32 = bind_value %.loc4_17.1
- // CHECK:STDOUT: %.loc4_17.3: init %tuple.type.2 = tuple_init (%.loc4_17.2) to file.%a.var
- // CHECK:STDOUT: %.loc4_22: init %tuple.type.2 = converted %a_ref.ref, %.loc4_17.3
- // CHECK:STDOUT: assign file.%a.var, %.loc4_22
- // CHECK:STDOUT: %b_ref.ref: ref %tuple.type.8 = name_ref b_ref, imports.%import_ref.2
- // CHECK:STDOUT: %.loc5_38.1: ref %tuple.type.6 = tuple_access %b_ref.ref, element0
- // CHECK:STDOUT: %.loc5_38.2: ref %tuple.type.2 = tuple_access %.loc5_38.1, element0
- // CHECK:STDOUT: %.loc5_38.3: ref %i32 = tuple_access %.loc5_38.2, element0
- // CHECK:STDOUT: %.loc5_38.4: %i32 = bind_value %.loc5_38.3
- // CHECK:STDOUT: %.loc5_38.5: ref %tuple.type.6 = tuple_access file.%b.var, element0
- // CHECK:STDOUT: %.loc5_38.6: ref %tuple.type.2 = tuple_access %.loc5_38.5, element0
- // CHECK:STDOUT: %.loc5_38.7: init %tuple.type.2 = tuple_init (%.loc5_38.4) to %.loc5_38.6
- // CHECK:STDOUT: %.loc5_38.8: init %tuple.type.2 = converted %.loc5_38.2, %.loc5_38.7
- // CHECK:STDOUT: %.loc5_38.9: init %tuple.type.2 = initialize_from %.loc5_38.8 to %.loc5_38.6
- // CHECK:STDOUT: %.loc5_38.10: ref %i32 = tuple_access %.loc5_38.1, element1
- // CHECK:STDOUT: %.loc5_38.11: %i32 = bind_value %.loc5_38.10
- // CHECK:STDOUT: %.loc5_38.12: ref %i32 = tuple_access %.loc5_38.5, element1
- // CHECK:STDOUT: %.loc5_38.13: init %i32 = initialize_from %.loc5_38.11 to %.loc5_38.12
- // CHECK:STDOUT: %.loc5_38.14: init %tuple.type.6 = tuple_init (%.loc5_38.9, %.loc5_38.13) to %.loc5_38.5
- // CHECK:STDOUT: %.loc5_38.15: init %tuple.type.6 = converted %.loc5_38.1, %.loc5_38.14
- // CHECK:STDOUT: %.loc5_38.16: ref %tuple.type.7 = tuple_access %b_ref.ref, element1
- // CHECK:STDOUT: %.loc5_38.17: ref %i32 = tuple_access %.loc5_38.16, element0
- // CHECK:STDOUT: %.loc5_38.18: %i32 = bind_value %.loc5_38.17
- // CHECK:STDOUT: %.loc5_38.19: ref %tuple.type.7 = tuple_access file.%b.var, element1
- // CHECK:STDOUT: %.loc5_38.20: ref %i32 = tuple_access %.loc5_38.19, element0
- // CHECK:STDOUT: %.loc5_38.21: init %i32 = initialize_from %.loc5_38.18 to %.loc5_38.20
- // CHECK:STDOUT: %.loc5_38.22: ref %i32 = tuple_access %.loc5_38.16, element1
- // CHECK:STDOUT: %.loc5_38.23: %i32 = bind_value %.loc5_38.22
- // CHECK:STDOUT: %.loc5_38.24: ref %i32 = tuple_access %.loc5_38.19, element1
- // CHECK:STDOUT: %.loc5_38.25: init %i32 = initialize_from %.loc5_38.23 to %.loc5_38.24
- // CHECK:STDOUT: %.loc5_38.26: init %tuple.type.7 = tuple_init (%.loc5_38.21, %.loc5_38.25) to %.loc5_38.19
- // CHECK:STDOUT: %.loc5_38.27: init %tuple.type.7 = converted %.loc5_38.16, %.loc5_38.26
- // CHECK:STDOUT: %.loc5_38.28: init %tuple.type.8 = tuple_init (%.loc5_38.15, %.loc5_38.27) to file.%b.var
- // CHECK:STDOUT: %.loc5_43: init %tuple.type.8 = converted %b_ref.ref, %.loc5_38.28
- // CHECK:STDOUT: assign file.%b.var, %.loc5_43
- // CHECK:STDOUT: %F.ref: %F.type = name_ref F, imports.%import_ref.4 [template = constants.%F]
- // CHECK:STDOUT: %.loc6: ref %C.3 = splice_block file.%c.var {}
- // CHECK:STDOUT: %F.call: init %C.3 = call %F.ref() to %.loc6
- // CHECK:STDOUT: assign file.%c.var, %F.call
- // CHECK:STDOUT: return
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @ImplicitAs(constants.%Dest) {
- // CHECK:STDOUT: %Dest => constants.%Dest
- // CHECK:STDOUT: %Dest.patt => constants.%Dest
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @ImplicitAs(constants.%iN) {
- // CHECK:STDOUT: %Dest => constants.%iN
- // CHECK:STDOUT: %Dest.patt => constants.%iN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @ImplicitAs(%Dest) {
- // CHECK:STDOUT: %Dest => constants.%Dest
- // CHECK:STDOUT: %Dest.patt => constants.%Dest
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @ImplicitAs(@impl.1.%iN) {
- // CHECK:STDOUT: %Dest => constants.%iN
- // CHECK:STDOUT: %Dest.patt => constants.%iN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @impl.1(constants.%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %N.patt => constants.%N
- // CHECK:STDOUT: %iN => constants.%iN
- // CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.3
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @impl.1(%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %N.patt => constants.%N
- // CHECK:STDOUT: %iN => constants.%iN
- // CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.3
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @ImplicitAs(@Convert.1.%Dest) {
- // CHECK:STDOUT: %Dest => constants.%Dest
- // CHECK:STDOUT: %Dest.patt => constants.%Dest
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @Convert.1(constants.%Dest, constants.%Self.1) {
- // CHECK:STDOUT: %Dest => constants.%Dest
- // CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.2
- // CHECK:STDOUT: %Self => constants.%Self.1
- // CHECK:STDOUT: %.1 => constants.%.5
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @Convert.2(constants.%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %iN => constants.%iN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @ImplicitAs(constants.%uN) {
- // CHECK:STDOUT: %Dest => constants.%uN
- // CHECK:STDOUT: %Dest.patt => constants.%uN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @ImplicitAs(@impl.2.%uN) {
- // CHECK:STDOUT: %Dest => constants.%uN
- // CHECK:STDOUT: %Dest.patt => constants.%uN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @impl.2(constants.%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %N.patt => constants.%N
- // CHECK:STDOUT: %uN => constants.%uN
- // CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.4
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @impl.2(%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %N.patt => constants.%N
- // CHECK:STDOUT: %uN => constants.%uN
- // CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.4
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @Convert.3(constants.%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %uN => constants.%uN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @ImplicitAs(Core.IntLiteral) {
- // CHECK:STDOUT: %Dest => Core.IntLiteral
- // CHECK:STDOUT: %Dest.patt => Core.IntLiteral
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.5
- // CHECK:STDOUT: %Self => constants.%Self.2
- // CHECK:STDOUT: %Convert.type => constants.%Convert.type.5
- // CHECK:STDOUT: %Convert => constants.%Convert.5
- // CHECK:STDOUT: %.1 => constants.%.8
- // CHECK:STDOUT: %.2 => constants.%.9
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @impl.3(constants.%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %N.patt => constants.%N
- // CHECK:STDOUT: %iN => constants.%iN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @impl.3(%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %N.patt => constants.%N
- // CHECK:STDOUT: %iN => constants.%iN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @Convert.4(constants.%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %iN => constants.%iN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @impl.4(constants.%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %N.patt => constants.%N
- // CHECK:STDOUT: %uN => constants.%uN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @impl.4(%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %N.patt => constants.%N
- // CHECK:STDOUT: %uN => constants.%uN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @Convert.5(constants.%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %uN => constants.%uN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @As(constants.%Dest) {
- // CHECK:STDOUT: %Dest => constants.%Dest
- // CHECK:STDOUT: %Dest.patt => constants.%Dest
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @As(constants.%iN) {
- // CHECK:STDOUT: %Dest => constants.%iN
- // CHECK:STDOUT: %Dest.patt => constants.%iN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @As(%Dest) {
- // CHECK:STDOUT: %Dest => constants.%Dest
- // CHECK:STDOUT: %Dest.patt => constants.%Dest
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @As(@impl.5.%iN) {
- // CHECK:STDOUT: %Dest => constants.%iN
- // CHECK:STDOUT: %Dest.patt => constants.%iN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @impl.5(constants.%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %N.patt => constants.%N
- // CHECK:STDOUT: %iN => constants.%iN
- // CHECK:STDOUT: %As.type => constants.%As.type.3
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @impl.5(%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %N.patt => constants.%N
- // CHECK:STDOUT: %iN => constants.%iN
- // CHECK:STDOUT: %As.type => constants.%As.type.3
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @As(@Convert.6.%Dest) {
- // CHECK:STDOUT: %Dest => constants.%Dest
- // CHECK:STDOUT: %Dest.patt => constants.%Dest
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @Convert.6(constants.%Dest, constants.%Self.3) {
- // CHECK:STDOUT: %Dest => constants.%Dest
- // CHECK:STDOUT: %As.type => constants.%As.type.2
- // CHECK:STDOUT: %Self => constants.%Self.3
- // CHECK:STDOUT: %.1 => constants.%.15
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @Convert.7(constants.%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %iN => constants.%iN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @As(constants.%uN) {
- // CHECK:STDOUT: %Dest => constants.%uN
- // CHECK:STDOUT: %Dest.patt => constants.%uN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @As(@impl.6.%uN) {
- // CHECK:STDOUT: %Dest => constants.%uN
- // CHECK:STDOUT: %Dest.patt => constants.%uN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @impl.6(constants.%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %N.patt => constants.%N
- // CHECK:STDOUT: %uN => constants.%uN
- // CHECK:STDOUT: %As.type => constants.%As.type.4
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @impl.6(%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %N.patt => constants.%N
- // CHECK:STDOUT: %uN => constants.%uN
- // CHECK:STDOUT: %As.type => constants.%As.type.4
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @Convert.8(constants.%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %uN => constants.%uN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @As(Core.IntLiteral) {
- // CHECK:STDOUT: %Dest => Core.IntLiteral
- // CHECK:STDOUT: %Dest.patt => Core.IntLiteral
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT: %As.type => constants.%As.type.5
- // CHECK:STDOUT: %Self => constants.%Self.4
- // CHECK:STDOUT: %Convert.type => constants.%Convert.type.11
- // CHECK:STDOUT: %Convert => constants.%Convert.11
- // CHECK:STDOUT: %.1 => constants.%.18
- // CHECK:STDOUT: %.2 => constants.%.19
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @impl.7(constants.%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %N.patt => constants.%N
- // CHECK:STDOUT: %iN => constants.%iN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @impl.7(%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %N.patt => constants.%N
- // CHECK:STDOUT: %iN => constants.%iN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @Convert.9(constants.%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %iN => constants.%iN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @impl.8(constants.%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %N.patt => constants.%N
- // CHECK:STDOUT: %uN => constants.%uN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @impl.8(%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %N.patt => constants.%N
- // CHECK:STDOUT: %uN => constants.%uN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @Convert.10(constants.%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %uN => constants.%uN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @C(constants.%X) {
- // CHECK:STDOUT: %X => constants.%X
- // CHECK:STDOUT: %X.patt => constants.%X
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @ImplicitAs(constants.%i32) {
- // CHECK:STDOUT: %Dest => constants.%i32
- // CHECK:STDOUT: %Dest.patt => constants.%i32
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.6
- // CHECK:STDOUT: %Self => constants.%Self.2
- // CHECK:STDOUT: %Convert.type => constants.%Convert.type.13
- // CHECK:STDOUT: %Convert => constants.%Convert.13
- // CHECK:STDOUT: %.1 => constants.%.29
- // CHECK:STDOUT: %.2 => constants.%.30
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @impl.1(constants.%.21) {
- // CHECK:STDOUT: %N => constants.%.21
- // CHECK:STDOUT: %N.patt => constants.%.21
- // CHECK:STDOUT: %iN => constants.%i32
- // CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.6
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT: %Convert.type => constants.%Convert.type.14
- // CHECK:STDOUT: %Convert => constants.%Convert.14
- // CHECK:STDOUT: %.1 => constants.%.32
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @Convert.2(constants.%.21) {
- // CHECK:STDOUT: %N => constants.%.21
- // CHECK:STDOUT: %iN => constants.%i32
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @C(constants.%tuple) {
- // CHECK:STDOUT: %X => constants.%tuple
- // CHECK:STDOUT: %X.patt => constants.%tuple
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: --- fail_bad_type.impl.carbon
- // CHECK:STDOUT:
- // CHECK:STDOUT: constants {
- // CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic]
- // CHECK:STDOUT: %iN: type = int_type signed, %N [symbolic]
- // CHECK:STDOUT: %Dest: type = bind_symbolic_name Dest, 0 [symbolic]
- // CHECK:STDOUT: %ImplicitAs.type.2: type = facet_type <@ImplicitAs, @ImplicitAs(%Dest)> [symbolic]
- // CHECK:STDOUT: %Self.1: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.2) = bind_symbolic_name Self, 1 [symbolic]
- // CHECK:STDOUT: %Dest.patt: type = symbolic_binding_pattern Dest, 0 [symbolic]
- // CHECK:STDOUT: %ImplicitAs.type.3: type = facet_type <@ImplicitAs, @ImplicitAs(%iN)> [symbolic]
- // CHECK:STDOUT: %N.patt: Core.IntLiteral = symbolic_binding_pattern N, 0 [symbolic]
- // CHECK:STDOUT: %Self.2: %ImplicitAs.type.2 = bind_symbolic_name Self, 1 [symbolic]
- // CHECK:STDOUT: %Convert.type.1: type = fn_type @Convert.1, @ImplicitAs(%Dest) [symbolic]
- // CHECK:STDOUT: %Convert.1: %Convert.type.1 = struct_value () [symbolic]
- // CHECK:STDOUT: %.1: type = facet_access_type %Self.2 [symbolic]
- // CHECK:STDOUT: %.2: type = assoc_entity_type %ImplicitAs.type.2, %Convert.type.1 [symbolic]
- // CHECK:STDOUT: %.3: %.2 = assoc_entity element0, imports.%import_ref.11 [symbolic]
- // CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.2, @impl.1(%N) [symbolic]
- // CHECK:STDOUT: %Convert.2: %Convert.type.2 = struct_value () [symbolic]
- // CHECK:STDOUT: %.4: <witness> = interface_witness (%Convert.2) [symbolic]
- // CHECK:STDOUT: %.5: type = facet_access_type %Self.1 [symbolic]
- // CHECK:STDOUT: %uN: type = int_type unsigned, %N [symbolic]
- // CHECK:STDOUT: %ImplicitAs.type.4: type = facet_type <@ImplicitAs, @ImplicitAs(%uN)> [symbolic]
- // CHECK:STDOUT: %Convert.type.3: type = fn_type @Convert.3, @impl.2(%N) [symbolic]
- // CHECK:STDOUT: %Convert.3: %Convert.type.3 = struct_value () [symbolic]
- // CHECK:STDOUT: %.6: <witness> = interface_witness (%Convert.3) [symbolic]
- // CHECK:STDOUT: %ImplicitAs.type.5: type = facet_type <@ImplicitAs, @ImplicitAs(Core.IntLiteral)> [template]
- // CHECK:STDOUT: %Convert.type.4: type = fn_type @Convert.4, @impl.3(%N) [symbolic]
- // CHECK:STDOUT: %Convert.4: %Convert.type.4 = struct_value () [symbolic]
- // CHECK:STDOUT: %.7: <witness> = interface_witness (%Convert.4) [symbolic]
- // CHECK:STDOUT: %Convert.type.5: type = fn_type @Convert.1, @ImplicitAs(Core.IntLiteral) [template]
- // CHECK:STDOUT: %Convert.5: %Convert.type.5 = struct_value () [template]
- // CHECK:STDOUT: %.8: type = assoc_entity_type %ImplicitAs.type.5, %Convert.type.5 [template]
- // CHECK:STDOUT: %.9: %.8 = assoc_entity element0, imports.%import_ref.18 [template]
- // CHECK:STDOUT: %Convert.type.6: type = fn_type @Convert.5, @impl.4(%N) [symbolic]
- // CHECK:STDOUT: %Convert.6: %Convert.type.6 = struct_value () [symbolic]
- // CHECK:STDOUT: %.10: <witness> = interface_witness (%Convert.6) [symbolic]
- // CHECK:STDOUT: %As.type.2: type = facet_type <@As, @As(%Dest)> [symbolic]
- // CHECK:STDOUT: %Self.3: @As.%As.type (%As.type.2) = bind_symbolic_name Self, 1 [symbolic]
- // CHECK:STDOUT: %As.type.3: type = facet_type <@As, @As(%iN)> [symbolic]
- // CHECK:STDOUT: %Self.4: %As.type.2 = bind_symbolic_name Self, 1 [symbolic]
- // CHECK:STDOUT: %Convert.type.7: type = fn_type @Convert.6, @As(%Dest) [symbolic]
- // CHECK:STDOUT: %Convert.7: %Convert.type.7 = struct_value () [symbolic]
- // CHECK:STDOUT: %.11: type = facet_access_type %Self.4 [symbolic]
- // CHECK:STDOUT: %.12: type = assoc_entity_type %As.type.2, %Convert.type.7 [symbolic]
- // CHECK:STDOUT: %.13: %.12 = assoc_entity element0, imports.%import_ref.28 [symbolic]
- // CHECK:STDOUT: %Convert.type.8: type = fn_type @Convert.7, @impl.5(%N) [symbolic]
- // CHECK:STDOUT: %Convert.8: %Convert.type.8 = struct_value () [symbolic]
- // CHECK:STDOUT: %.14: <witness> = interface_witness (%Convert.8) [symbolic]
- // CHECK:STDOUT: %.15: type = facet_access_type %Self.3 [symbolic]
- // CHECK:STDOUT: %As.type.4: type = facet_type <@As, @As(%uN)> [symbolic]
- // CHECK:STDOUT: %Convert.type.9: type = fn_type @Convert.8, @impl.6(%N) [symbolic]
- // CHECK:STDOUT: %Convert.9: %Convert.type.9 = struct_value () [symbolic]
- // CHECK:STDOUT: %.16: <witness> = interface_witness (%Convert.9) [symbolic]
- // CHECK:STDOUT: %As.type.5: type = facet_type <@As, @As(Core.IntLiteral)> [template]
- // CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.9, @impl.7(%N) [symbolic]
- // CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [symbolic]
- // CHECK:STDOUT: %.17: <witness> = interface_witness (%Convert.10) [symbolic]
- // CHECK:STDOUT: %Convert.type.11: type = fn_type @Convert.6, @As(Core.IntLiteral) [template]
- // CHECK:STDOUT: %Convert.11: %Convert.type.11 = struct_value () [template]
- // CHECK:STDOUT: %.18: type = assoc_entity_type %As.type.5, %Convert.type.11 [template]
- // CHECK:STDOUT: %.19: %.18 = assoc_entity element0, imports.%import_ref.35 [template]
- // CHECK:STDOUT: %Convert.type.12: type = fn_type @Convert.10, @impl.8(%N) [symbolic]
- // CHECK:STDOUT: %Convert.12: %Convert.type.12 = struct_value () [symbolic]
- // CHECK:STDOUT: %.20: <witness> = interface_witness (%Convert.12) [symbolic]
- // CHECK:STDOUT: %C.type: type = generic_class_type @C [template]
- // CHECK:STDOUT: %C.1: %C.type = struct_value () [template]
- // CHECK:STDOUT: %.23: Core.IntLiteral = int_value 32 [template]
- // CHECK:STDOUT: %i32: type = int_type signed, %.23 [template]
- // CHECK:STDOUT: %tuple.type.1: type = tuple_type (%i32, %i32) [template]
- // CHECK:STDOUT: %X: %tuple.type.1 = bind_symbolic_name X, 0 [symbolic]
- // CHECK:STDOUT: %X.patt: %tuple.type.1 = symbolic_binding_pattern X, 0 [symbolic]
- // CHECK:STDOUT: %.24: Core.IntLiteral = int_value 1 [template]
- // CHECK:STDOUT: %.25: Core.IntLiteral = int_value 2 [template]
- // CHECK:STDOUT: %.26: Core.IntLiteral = int_value 3 [template]
- // CHECK:STDOUT: %tuple.type.2: type = tuple_type (Core.IntLiteral, Core.IntLiteral, Core.IntLiteral) [template]
- // CHECK:STDOUT: %F.type: type = fn_type @F [template]
- // CHECK:STDOUT: %F: %F.type = struct_value () [template]
- // CHECK:STDOUT: %.28: %i32 = int_value 2 [template]
- // CHECK:STDOUT: %.29: %i32 = int_value 1 [template]
- // CHECK:STDOUT: %tuple: %tuple.type.1 = tuple_value (%.29, %.28) [template]
- // CHECK:STDOUT: %C.3: type = class_type @C, @C(%tuple) [template]
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: imports {
- // CHECK:STDOUT: %import_ref.1 = import_ref Implicit//default, inst+24, unloaded
- // CHECK:STDOUT: %import_ref.2 = import_ref Implicit//default, inst+370, unloaded
- // CHECK:STDOUT: %import_ref.3: %C.type = import_ref Implicit//default, inst+453, loaded [template = constants.%C.1]
- // CHECK:STDOUT: %import_ref.4: %F.type = import_ref Implicit//default, inst+487, loaded [template = constants.%F]
- // CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [template] {
- // CHECK:STDOUT: import Core//prelude
- // CHECK:STDOUT: import Core//prelude/...
- // CHECK:STDOUT: }
- // CHECK:STDOUT: %import_ref.5 = import_ref Implicit//default, inst+40, unloaded
- // CHECK:STDOUT: %import_ref.6 = import_ref Implicit//default, inst+41, unloaded
- // CHECK:STDOUT: %import_ref.7 = import_ref Implicit//default, inst+42, unloaded
- // CHECK:STDOUT: %import_ref.8: type = import_ref Implicit//default, inst+83, loaded [template = Core.IntLiteral]
- // CHECK:STDOUT: %import_ref.9: type = import_ref Implicit//default, inst+84, loaded [symbolic = @impl.1.%ImplicitAs.type (constants.%ImplicitAs.type.3)]
- // CHECK:STDOUT: %import_ref.10 = import_ref Implicit//default, inst+85, unloaded
- // CHECK:STDOUT: %import_ref.11 = import_ref Implicit//default, inst+56, unloaded
- // CHECK:STDOUT: %import_ref.12: type = import_ref Implicit//default, inst+109, loaded [template = Core.IntLiteral]
- // CHECK:STDOUT: %import_ref.13: type = import_ref Implicit//default, inst+110, loaded [symbolic = @impl.2.%ImplicitAs.type (constants.%ImplicitAs.type.4)]
- // CHECK:STDOUT: %import_ref.14 = import_ref Implicit//default, inst+111, unloaded
- // CHECK:STDOUT: %import_ref.15: type = import_ref Implicit//default, inst+134, loaded [symbolic = @impl.3.%iN (constants.%iN)]
- // CHECK:STDOUT: %import_ref.16: type = import_ref Implicit//default, inst+135, loaded [template = constants.%ImplicitAs.type.5]
- // CHECK:STDOUT: %import_ref.17 = import_ref Implicit//default, inst+136, unloaded
- // CHECK:STDOUT: %import_ref.19: type = import_ref Implicit//default, inst+162, loaded [symbolic = @impl.4.%uN (constants.%uN)]
- // CHECK:STDOUT: %import_ref.20: type = import_ref Implicit//default, inst+163, loaded [template = constants.%ImplicitAs.type.5]
- // CHECK:STDOUT: %import_ref.21 = import_ref Implicit//default, inst+164, unloaded
- // CHECK:STDOUT: %import_ref.22 = import_ref Implicit//default, inst+190, unloaded
- // CHECK:STDOUT: %import_ref.23 = import_ref Implicit//default, inst+191, unloaded
- // CHECK:STDOUT: %import_ref.24 = import_ref Implicit//default, inst+192, unloaded
- // CHECK:STDOUT: %import_ref.25: type = import_ref Implicit//default, inst+196, loaded [template = Core.IntLiteral]
- // CHECK:STDOUT: %import_ref.26: type = import_ref Implicit//default, inst+197, loaded [symbolic = @impl.5.%As.type (constants.%As.type.3)]
- // CHECK:STDOUT: %import_ref.27 = import_ref Implicit//default, inst+198, unloaded
- // CHECK:STDOUT: %import_ref.28 = import_ref Implicit//default, inst+212, unloaded
- // CHECK:STDOUT: %import_ref.29: type = import_ref Implicit//default, inst+247, loaded [template = Core.IntLiteral]
- // CHECK:STDOUT: %import_ref.30: type = import_ref Implicit//default, inst+248, loaded [symbolic = @impl.6.%As.type (constants.%As.type.4)]
- // CHECK:STDOUT: %import_ref.31 = import_ref Implicit//default, inst+249, unloaded
- // CHECK:STDOUT: %import_ref.32: type = import_ref Implicit//default, inst+272, loaded [symbolic = @impl.7.%iN (constants.%iN)]
- // CHECK:STDOUT: %import_ref.33: type = import_ref Implicit//default, inst+273, loaded [template = constants.%As.type.5]
- // CHECK:STDOUT: %import_ref.34 = import_ref Implicit//default, inst+274, unloaded
- // CHECK:STDOUT: %import_ref.36: type = import_ref Implicit//default, inst+300, loaded [symbolic = @impl.8.%uN (constants.%uN)]
- // CHECK:STDOUT: %import_ref.37: type = import_ref Implicit//default, inst+301, loaded [template = constants.%As.type.5]
- // CHECK:STDOUT: %import_ref.38 = import_ref Implicit//default, inst+302, unloaded
- // CHECK:STDOUT: %import_ref.39 = import_ref Implicit//default, inst+458, unloaded
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: file {
- // CHECK:STDOUT: package: <namespace> = namespace [template] {
- // CHECK:STDOUT: .a_ref = imports.%import_ref.1
- // CHECK:STDOUT: .b_ref = imports.%import_ref.2
- // CHECK:STDOUT: .C = imports.%import_ref.3
- // CHECK:STDOUT: .F = imports.%import_ref.4
- // CHECK:STDOUT: .Core = imports.%Core
- // CHECK:STDOUT: .c_bad = %c_bad
- // CHECK:STDOUT: }
- // CHECK:STDOUT: %Implicit.import = import Implicit
- // CHECK:STDOUT: %default.import = import <invalid>
- // CHECK:STDOUT: %Core.import = import Core
- // CHECK:STDOUT: %C.ref: %C.type = name_ref C, imports.%import_ref.3 [template = constants.%C.1]
- // CHECK:STDOUT: %.loc12_15: Core.IntLiteral = int_value 1 [template = constants.%.24]
- // CHECK:STDOUT: %.loc12_18: Core.IntLiteral = int_value 2 [template = constants.%.25]
- // CHECK:STDOUT: %.loc12_21: Core.IntLiteral = int_value 3 [template = constants.%.26]
- // CHECK:STDOUT: %.loc12_22: %tuple.type.2 = tuple_literal (%.loc12_15, %.loc12_18, %.loc12_21)
- // CHECK:STDOUT: %c_bad.var: ref <error> = var c_bad
- // CHECK:STDOUT: %c_bad: ref <error> = bind_name c_bad, %c_bad.var
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: generic interface @ImplicitAs(constants.%Dest: type) {
- // CHECK:STDOUT: %Dest: type = bind_symbolic_name Dest, 0 [symbolic = %Dest (constants.%Dest)]
- // CHECK:STDOUT: %Dest.patt: type = symbolic_binding_pattern Dest, 0 [symbolic = %Dest.patt (constants.%Dest.patt)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(%Dest)> [symbolic = %ImplicitAs.type (constants.%ImplicitAs.type.2)]
- // CHECK:STDOUT: %Self: %ImplicitAs.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.2)]
- // CHECK:STDOUT: %Convert.type: type = fn_type @Convert.1, @ImplicitAs(%Dest) [symbolic = %Convert.type (constants.%Convert.type.1)]
- // CHECK:STDOUT: %Convert: @ImplicitAs.%Convert.type (%Convert.type.1) = struct_value () [symbolic = %Convert (constants.%Convert.1)]
- // CHECK:STDOUT: %.1: type = assoc_entity_type @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.2), @ImplicitAs.%Convert.type (%Convert.type.1) [symbolic = %.1 (constants.%.2)]
- // CHECK:STDOUT: %.2: @ImplicitAs.%.1 (%.2) = assoc_entity element0, imports.%import_ref.11 [symbolic = %.2 (constants.%.3)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: interface {
- // CHECK:STDOUT: !members:
- // CHECK:STDOUT: .Self = imports.%import_ref.5
- // CHECK:STDOUT: .Convert = imports.%import_ref.6
- // CHECK:STDOUT: witness = (imports.%import_ref.7)
- // CHECK:STDOUT: }
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: generic interface @As(constants.%Dest: type) {
- // CHECK:STDOUT: %Dest: type = bind_symbolic_name Dest, 0 [symbolic = %Dest (constants.%Dest)]
- // CHECK:STDOUT: %Dest.patt: type = symbolic_binding_pattern Dest, 0 [symbolic = %Dest.patt (constants.%Dest.patt)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT: %As.type: type = facet_type <@As, @As(%Dest)> [symbolic = %As.type (constants.%As.type.2)]
- // CHECK:STDOUT: %Self: %As.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.4)]
- // CHECK:STDOUT: %Convert.type: type = fn_type @Convert.6, @As(%Dest) [symbolic = %Convert.type (constants.%Convert.type.7)]
- // CHECK:STDOUT: %Convert: @As.%Convert.type (%Convert.type.7) = struct_value () [symbolic = %Convert (constants.%Convert.7)]
- // CHECK:STDOUT: %.1: type = assoc_entity_type @As.%As.type (%As.type.2), @As.%Convert.type (%Convert.type.7) [symbolic = %.1 (constants.%.12)]
- // CHECK:STDOUT: %.2: @As.%.1 (%.12) = assoc_entity element0, imports.%import_ref.28 [symbolic = %.2 (constants.%.13)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: interface {
- // CHECK:STDOUT: !members:
- // CHECK:STDOUT: .Self = imports.%import_ref.22
- // CHECK:STDOUT: .Convert = imports.%import_ref.23
- // CHECK:STDOUT: witness = (imports.%import_ref.24)
- // CHECK:STDOUT: }
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: generic impl @impl.1(constants.%N: Core.IntLiteral) {
- // CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N (constants.%N)]
- // CHECK:STDOUT: %N.patt: Core.IntLiteral = symbolic_binding_pattern N, 0 [symbolic = %N.patt (constants.%N.patt)]
- // CHECK:STDOUT: %iN: type = int_type signed, %N [symbolic = %iN (constants.%iN)]
- // CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(%iN)> [symbolic = %ImplicitAs.type (constants.%ImplicitAs.type.3)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT: %Convert.type: type = fn_type @Convert.2, @impl.1(%N) [symbolic = %Convert.type (constants.%Convert.type.2)]
- // CHECK:STDOUT: %Convert: @impl.1.%Convert.type (%Convert.type.2) = struct_value () [symbolic = %Convert (constants.%Convert.2)]
- // CHECK:STDOUT: %.1: <witness> = interface_witness (%Convert) [symbolic = %.1 (constants.%.4)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: impl: imports.%import_ref.8 as imports.%import_ref.9 {
- // CHECK:STDOUT: !members:
- // CHECK:STDOUT: witness = imports.%import_ref.10
- // CHECK:STDOUT: }
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: generic impl @impl.2(constants.%N: Core.IntLiteral) {
- // CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N (constants.%N)]
- // CHECK:STDOUT: %N.patt: Core.IntLiteral = symbolic_binding_pattern N, 0 [symbolic = %N.patt (constants.%N.patt)]
- // CHECK:STDOUT: %uN: type = int_type unsigned, %N [symbolic = %uN (constants.%uN)]
- // CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(%uN)> [symbolic = %ImplicitAs.type (constants.%ImplicitAs.type.4)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT: %Convert.type: type = fn_type @Convert.3, @impl.2(%N) [symbolic = %Convert.type (constants.%Convert.type.3)]
- // CHECK:STDOUT: %Convert: @impl.2.%Convert.type (%Convert.type.3) = struct_value () [symbolic = %Convert (constants.%Convert.3)]
- // CHECK:STDOUT: %.1: <witness> = interface_witness (%Convert) [symbolic = %.1 (constants.%.6)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: impl: imports.%import_ref.12 as imports.%import_ref.13 {
- // CHECK:STDOUT: !members:
- // CHECK:STDOUT: witness = imports.%import_ref.14
- // CHECK:STDOUT: }
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: generic impl @impl.3(constants.%N: Core.IntLiteral) {
- // CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N (constants.%N)]
- // CHECK:STDOUT: %N.patt: Core.IntLiteral = symbolic_binding_pattern N, 0 [symbolic = %N.patt (constants.%N.patt)]
- // CHECK:STDOUT: %iN: type = int_type signed, %N [symbolic = %iN (constants.%iN)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT: %Convert.type: type = fn_type @Convert.4, @impl.3(%N) [symbolic = %Convert.type (constants.%Convert.type.4)]
- // CHECK:STDOUT: %Convert: @impl.3.%Convert.type (%Convert.type.4) = struct_value () [symbolic = %Convert (constants.%Convert.4)]
- // CHECK:STDOUT: %.1: <witness> = interface_witness (%Convert) [symbolic = %.1 (constants.%.7)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: impl: imports.%import_ref.15 as imports.%import_ref.16 {
- // CHECK:STDOUT: !members:
- // CHECK:STDOUT: witness = imports.%import_ref.17
- // CHECK:STDOUT: }
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: generic impl @impl.4(constants.%N: Core.IntLiteral) {
- // CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N (constants.%N)]
- // CHECK:STDOUT: %N.patt: Core.IntLiteral = symbolic_binding_pattern N, 0 [symbolic = %N.patt (constants.%N.patt)]
- // CHECK:STDOUT: %uN: type = int_type unsigned, %N [symbolic = %uN (constants.%uN)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT: %Convert.type: type = fn_type @Convert.5, @impl.4(%N) [symbolic = %Convert.type (constants.%Convert.type.6)]
- // CHECK:STDOUT: %Convert: @impl.4.%Convert.type (%Convert.type.6) = struct_value () [symbolic = %Convert (constants.%Convert.6)]
- // CHECK:STDOUT: %.1: <witness> = interface_witness (%Convert) [symbolic = %.1 (constants.%.10)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: impl: imports.%import_ref.19 as imports.%import_ref.20 {
- // CHECK:STDOUT: !members:
- // CHECK:STDOUT: witness = imports.%import_ref.21
- // CHECK:STDOUT: }
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: generic impl @impl.5(constants.%N: Core.IntLiteral) {
- // CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N (constants.%N)]
- // CHECK:STDOUT: %N.patt: Core.IntLiteral = symbolic_binding_pattern N, 0 [symbolic = %N.patt (constants.%N.patt)]
- // CHECK:STDOUT: %iN: type = int_type signed, %N [symbolic = %iN (constants.%iN)]
- // CHECK:STDOUT: %As.type: type = facet_type <@As, @As(%iN)> [symbolic = %As.type (constants.%As.type.3)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT: %Convert.type: type = fn_type @Convert.7, @impl.5(%N) [symbolic = %Convert.type (constants.%Convert.type.8)]
- // CHECK:STDOUT: %Convert: @impl.5.%Convert.type (%Convert.type.8) = struct_value () [symbolic = %Convert (constants.%Convert.8)]
- // CHECK:STDOUT: %.1: <witness> = interface_witness (%Convert) [symbolic = %.1 (constants.%.14)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: impl: imports.%import_ref.25 as imports.%import_ref.26 {
- // CHECK:STDOUT: !members:
- // CHECK:STDOUT: witness = imports.%import_ref.27
- // CHECK:STDOUT: }
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: generic impl @impl.6(constants.%N: Core.IntLiteral) {
- // CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N (constants.%N)]
- // CHECK:STDOUT: %N.patt: Core.IntLiteral = symbolic_binding_pattern N, 0 [symbolic = %N.patt (constants.%N.patt)]
- // CHECK:STDOUT: %uN: type = int_type unsigned, %N [symbolic = %uN (constants.%uN)]
- // CHECK:STDOUT: %As.type: type = facet_type <@As, @As(%uN)> [symbolic = %As.type (constants.%As.type.4)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT: %Convert.type: type = fn_type @Convert.8, @impl.6(%N) [symbolic = %Convert.type (constants.%Convert.type.9)]
- // CHECK:STDOUT: %Convert: @impl.6.%Convert.type (%Convert.type.9) = struct_value () [symbolic = %Convert (constants.%Convert.9)]
- // CHECK:STDOUT: %.1: <witness> = interface_witness (%Convert) [symbolic = %.1 (constants.%.16)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: impl: imports.%import_ref.29 as imports.%import_ref.30 {
- // CHECK:STDOUT: !members:
- // CHECK:STDOUT: witness = imports.%import_ref.31
- // CHECK:STDOUT: }
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: generic impl @impl.7(constants.%N: Core.IntLiteral) {
- // CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N (constants.%N)]
- // CHECK:STDOUT: %N.patt: Core.IntLiteral = symbolic_binding_pattern N, 0 [symbolic = %N.patt (constants.%N.patt)]
- // CHECK:STDOUT: %iN: type = int_type signed, %N [symbolic = %iN (constants.%iN)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT: %Convert.type: type = fn_type @Convert.9, @impl.7(%N) [symbolic = %Convert.type (constants.%Convert.type.10)]
- // CHECK:STDOUT: %Convert: @impl.7.%Convert.type (%Convert.type.10) = struct_value () [symbolic = %Convert (constants.%Convert.10)]
- // CHECK:STDOUT: %.1: <witness> = interface_witness (%Convert) [symbolic = %.1 (constants.%.17)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: impl: imports.%import_ref.32 as imports.%import_ref.33 {
- // CHECK:STDOUT: !members:
- // CHECK:STDOUT: witness = imports.%import_ref.34
- // CHECK:STDOUT: }
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: generic impl @impl.8(constants.%N: Core.IntLiteral) {
- // CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N (constants.%N)]
- // CHECK:STDOUT: %N.patt: Core.IntLiteral = symbolic_binding_pattern N, 0 [symbolic = %N.patt (constants.%N.patt)]
- // CHECK:STDOUT: %uN: type = int_type unsigned, %N [symbolic = %uN (constants.%uN)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT: %Convert.type: type = fn_type @Convert.10, @impl.8(%N) [symbolic = %Convert.type (constants.%Convert.type.12)]
- // CHECK:STDOUT: %Convert: @impl.8.%Convert.type (%Convert.type.12) = struct_value () [symbolic = %Convert (constants.%Convert.12)]
- // CHECK:STDOUT: %.1: <witness> = interface_witness (%Convert) [symbolic = %.1 (constants.%.20)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: impl: imports.%import_ref.36 as imports.%import_ref.37 {
- // CHECK:STDOUT: !members:
- // CHECK:STDOUT: witness = imports.%import_ref.38
- // CHECK:STDOUT: }
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: generic class @C(constants.%X: %tuple.type.1) {
- // CHECK:STDOUT: %X: %tuple.type.1 = bind_symbolic_name X, 0 [symbolic = %X (constants.%X)]
- // CHECK:STDOUT: %X.patt: %tuple.type.1 = symbolic_binding_pattern X, 0 [symbolic = %X.patt (constants.%X.patt)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT:
- // CHECK:STDOUT: class {
- // CHECK:STDOUT: !members:
- // CHECK:STDOUT: .Self = imports.%import_ref.39
- // CHECK:STDOUT: }
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: generic fn @Convert.1(constants.%Dest: type, constants.%Self.1: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.2)) {
- // CHECK:STDOUT: %Dest: type = bind_symbolic_name Dest, 0 [symbolic = %Dest (constants.%Dest)]
- // CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(%Dest)> [symbolic = %ImplicitAs.type (constants.%ImplicitAs.type.2)]
- // CHECK:STDOUT: %Self: %ImplicitAs.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.2)]
- // CHECK:STDOUT: %.1: type = facet_access_type %Self [symbolic = %.1 (constants.%.1)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: fn[%self.param_patt: @Convert.1.%.1 (%.1)]() -> @Convert.1.%Dest (%Dest);
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: generic fn @Convert.2(constants.%N: Core.IntLiteral) {
- // CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N (constants.%N)]
- // CHECK:STDOUT: %iN: type = int_type signed, %N [symbolic = %iN (constants.%iN)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT:
- // CHECK:STDOUT: fn[%self.param_patt: Core.IntLiteral]() -> @Convert.2.%iN (%iN) = "int.convert_checked";
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: generic fn @Convert.3(constants.%N: Core.IntLiteral) {
- // CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N (constants.%N)]
- // CHECK:STDOUT: %uN: type = int_type unsigned, %N [symbolic = %uN (constants.%uN)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT:
- // CHECK:STDOUT: fn[%self.param_patt: Core.IntLiteral]() -> @Convert.3.%uN (%uN) = "int.convert_checked";
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: generic fn @Convert.4(constants.%N: Core.IntLiteral) {
- // CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N (constants.%N)]
- // CHECK:STDOUT: %iN: type = int_type signed, %N [symbolic = %iN (constants.%iN)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT:
- // CHECK:STDOUT: fn[%self.param_patt: @Convert.4.%iN (%iN)]() -> Core.IntLiteral = "int.convert_checked";
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: generic fn @Convert.5(constants.%N: Core.IntLiteral) {
- // CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N (constants.%N)]
- // CHECK:STDOUT: %uN: type = int_type unsigned, %N [symbolic = %uN (constants.%uN)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT:
- // CHECK:STDOUT: fn[%self.param_patt: @Convert.5.%uN (%uN)]() -> Core.IntLiteral = "int.convert_checked";
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: generic fn @Convert.6(constants.%Dest: type, constants.%Self.3: @As.%As.type (%As.type.2)) {
- // CHECK:STDOUT: %Dest: type = bind_symbolic_name Dest, 0 [symbolic = %Dest (constants.%Dest)]
- // CHECK:STDOUT: %As.type: type = facet_type <@As, @As(%Dest)> [symbolic = %As.type (constants.%As.type.2)]
- // CHECK:STDOUT: %Self: %As.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.4)]
- // CHECK:STDOUT: %.1: type = facet_access_type %Self [symbolic = %.1 (constants.%.11)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: fn[%self.param_patt: @Convert.6.%.1 (%.11)]() -> @Convert.6.%Dest (%Dest);
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: generic fn @Convert.7(constants.%N: Core.IntLiteral) {
- // CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N (constants.%N)]
- // CHECK:STDOUT: %iN: type = int_type signed, %N [symbolic = %iN (constants.%iN)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT:
- // CHECK:STDOUT: fn[%self.param_patt: Core.IntLiteral]() -> @Convert.7.%iN (%iN) = "int.convert_checked";
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: generic fn @Convert.8(constants.%N: Core.IntLiteral) {
- // CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N (constants.%N)]
- // CHECK:STDOUT: %uN: type = int_type unsigned, %N [symbolic = %uN (constants.%uN)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT:
- // CHECK:STDOUT: fn[%self.param_patt: Core.IntLiteral]() -> @Convert.8.%uN (%uN) = "int.convert_checked";
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: generic fn @Convert.9(constants.%N: Core.IntLiteral) {
- // CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N (constants.%N)]
- // CHECK:STDOUT: %iN: type = int_type signed, %N [symbolic = %iN (constants.%iN)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT:
- // CHECK:STDOUT: fn[%self.param_patt: @Convert.9.%iN (%iN)]() -> Core.IntLiteral = "int.convert_checked";
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: generic fn @Convert.10(constants.%N: Core.IntLiteral) {
- // CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N (constants.%N)]
- // CHECK:STDOUT: %uN: type = int_type unsigned, %N [symbolic = %uN (constants.%uN)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT:
- // CHECK:STDOUT: fn[%self.param_patt: @Convert.10.%uN (%uN)]() -> Core.IntLiteral = "int.convert_checked";
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: fn @F() -> %C.3;
- // CHECK:STDOUT:
- // CHECK:STDOUT: fn @__global_init() {
- // CHECK:STDOUT: !entry:
- // CHECK:STDOUT: %F.ref: %F.type = name_ref F, imports.%import_ref.4 [template = constants.%F]
- // CHECK:STDOUT: %.loc12: ref %C.3 = temporary_storage
- // CHECK:STDOUT: %F.call: init %C.3 = call %F.ref() to %.loc12
- // CHECK:STDOUT: assign file.%c_bad.var, <error>
- // CHECK:STDOUT: return
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @ImplicitAs(constants.%Dest) {
- // CHECK:STDOUT: %Dest => constants.%Dest
- // CHECK:STDOUT: %Dest.patt => constants.%Dest
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @ImplicitAs(constants.%iN) {
- // CHECK:STDOUT: %Dest => constants.%iN
- // CHECK:STDOUT: %Dest.patt => constants.%iN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @ImplicitAs(%Dest) {
- // CHECK:STDOUT: %Dest => constants.%Dest
- // CHECK:STDOUT: %Dest.patt => constants.%Dest
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @ImplicitAs(@impl.1.%iN) {
- // CHECK:STDOUT: %Dest => constants.%iN
- // CHECK:STDOUT: %Dest.patt => constants.%iN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @impl.1(constants.%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %N.patt => constants.%N
- // CHECK:STDOUT: %iN => constants.%iN
- // CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.3
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @impl.1(%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %N.patt => constants.%N
- // CHECK:STDOUT: %iN => constants.%iN
- // CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.3
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @ImplicitAs(@Convert.1.%Dest) {
- // CHECK:STDOUT: %Dest => constants.%Dest
- // CHECK:STDOUT: %Dest.patt => constants.%Dest
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @Convert.1(constants.%Dest, constants.%Self.1) {
- // CHECK:STDOUT: %Dest => constants.%Dest
- // CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.2
- // CHECK:STDOUT: %Self => constants.%Self.1
- // CHECK:STDOUT: %.1 => constants.%.5
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @Convert.2(constants.%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %iN => constants.%iN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @ImplicitAs(constants.%uN) {
- // CHECK:STDOUT: %Dest => constants.%uN
- // CHECK:STDOUT: %Dest.patt => constants.%uN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @ImplicitAs(@impl.2.%uN) {
- // CHECK:STDOUT: %Dest => constants.%uN
- // CHECK:STDOUT: %Dest.patt => constants.%uN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @impl.2(constants.%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %N.patt => constants.%N
- // CHECK:STDOUT: %uN => constants.%uN
- // CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.4
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @impl.2(%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %N.patt => constants.%N
- // CHECK:STDOUT: %uN => constants.%uN
- // CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.4
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @Convert.3(constants.%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %uN => constants.%uN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @ImplicitAs(Core.IntLiteral) {
- // CHECK:STDOUT: %Dest => Core.IntLiteral
- // CHECK:STDOUT: %Dest.patt => Core.IntLiteral
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.5
- // CHECK:STDOUT: %Self => constants.%Self.2
- // CHECK:STDOUT: %Convert.type => constants.%Convert.type.5
- // CHECK:STDOUT: %Convert => constants.%Convert.5
- // CHECK:STDOUT: %.1 => constants.%.8
- // CHECK:STDOUT: %.2 => constants.%.9
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @impl.3(constants.%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %N.patt => constants.%N
- // CHECK:STDOUT: %iN => constants.%iN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @impl.3(%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %N.patt => constants.%N
- // CHECK:STDOUT: %iN => constants.%iN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @Convert.4(constants.%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %iN => constants.%iN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @impl.4(constants.%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %N.patt => constants.%N
- // CHECK:STDOUT: %uN => constants.%uN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @impl.4(%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %N.patt => constants.%N
- // CHECK:STDOUT: %uN => constants.%uN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @Convert.5(constants.%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %uN => constants.%uN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @As(constants.%Dest) {
- // CHECK:STDOUT: %Dest => constants.%Dest
- // CHECK:STDOUT: %Dest.patt => constants.%Dest
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @As(constants.%iN) {
- // CHECK:STDOUT: %Dest => constants.%iN
- // CHECK:STDOUT: %Dest.patt => constants.%iN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @As(%Dest) {
- // CHECK:STDOUT: %Dest => constants.%Dest
- // CHECK:STDOUT: %Dest.patt => constants.%Dest
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @As(@impl.5.%iN) {
- // CHECK:STDOUT: %Dest => constants.%iN
- // CHECK:STDOUT: %Dest.patt => constants.%iN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @impl.5(constants.%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %N.patt => constants.%N
- // CHECK:STDOUT: %iN => constants.%iN
- // CHECK:STDOUT: %As.type => constants.%As.type.3
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @impl.5(%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %N.patt => constants.%N
- // CHECK:STDOUT: %iN => constants.%iN
- // CHECK:STDOUT: %As.type => constants.%As.type.3
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @As(@Convert.6.%Dest) {
- // CHECK:STDOUT: %Dest => constants.%Dest
- // CHECK:STDOUT: %Dest.patt => constants.%Dest
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @Convert.6(constants.%Dest, constants.%Self.3) {
- // CHECK:STDOUT: %Dest => constants.%Dest
- // CHECK:STDOUT: %As.type => constants.%As.type.2
- // CHECK:STDOUT: %Self => constants.%Self.3
- // CHECK:STDOUT: %.1 => constants.%.15
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @Convert.7(constants.%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %iN => constants.%iN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @As(constants.%uN) {
- // CHECK:STDOUT: %Dest => constants.%uN
- // CHECK:STDOUT: %Dest.patt => constants.%uN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @As(@impl.6.%uN) {
- // CHECK:STDOUT: %Dest => constants.%uN
- // CHECK:STDOUT: %Dest.patt => constants.%uN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @impl.6(constants.%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %N.patt => constants.%N
- // CHECK:STDOUT: %uN => constants.%uN
- // CHECK:STDOUT: %As.type => constants.%As.type.4
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @impl.6(%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %N.patt => constants.%N
- // CHECK:STDOUT: %uN => constants.%uN
- // CHECK:STDOUT: %As.type => constants.%As.type.4
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @Convert.8(constants.%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %uN => constants.%uN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @As(Core.IntLiteral) {
- // CHECK:STDOUT: %Dest => Core.IntLiteral
- // CHECK:STDOUT: %Dest.patt => Core.IntLiteral
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT: %As.type => constants.%As.type.5
- // CHECK:STDOUT: %Self => constants.%Self.4
- // CHECK:STDOUT: %Convert.type => constants.%Convert.type.11
- // CHECK:STDOUT: %Convert => constants.%Convert.11
- // CHECK:STDOUT: %.1 => constants.%.18
- // CHECK:STDOUT: %.2 => constants.%.19
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @impl.7(constants.%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %N.patt => constants.%N
- // CHECK:STDOUT: %iN => constants.%iN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @impl.7(%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %N.patt => constants.%N
- // CHECK:STDOUT: %iN => constants.%iN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @Convert.9(constants.%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %iN => constants.%iN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @impl.8(constants.%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %N.patt => constants.%N
- // CHECK:STDOUT: %uN => constants.%uN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @impl.8(%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %N.patt => constants.%N
- // CHECK:STDOUT: %uN => constants.%uN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @Convert.10(constants.%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %uN => constants.%uN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @C(constants.%X) {
- // CHECK:STDOUT: %X => constants.%X
- // CHECK:STDOUT: %X.patt => constants.%X
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @C(constants.%tuple) {
- // CHECK:STDOUT: %X => constants.%tuple
- // CHECK:STDOUT: %X.patt => constants.%tuple
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: --- fail_bad_value.impl.carbon
- // CHECK:STDOUT:
- // CHECK:STDOUT: constants {
- // CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic]
- // CHECK:STDOUT: %iN: type = int_type signed, %N [symbolic]
- // CHECK:STDOUT: %Dest: type = bind_symbolic_name Dest, 0 [symbolic]
- // CHECK:STDOUT: %ImplicitAs.type.2: type = facet_type <@ImplicitAs, @ImplicitAs(%Dest)> [symbolic]
- // CHECK:STDOUT: %Self.1: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.2) = bind_symbolic_name Self, 1 [symbolic]
- // CHECK:STDOUT: %Dest.patt: type = symbolic_binding_pattern Dest, 0 [symbolic]
- // CHECK:STDOUT: %ImplicitAs.type.3: type = facet_type <@ImplicitAs, @ImplicitAs(%iN)> [symbolic]
- // CHECK:STDOUT: %N.patt: Core.IntLiteral = symbolic_binding_pattern N, 0 [symbolic]
- // CHECK:STDOUT: %Self.2: %ImplicitAs.type.2 = bind_symbolic_name Self, 1 [symbolic]
- // CHECK:STDOUT: %Convert.type.1: type = fn_type @Convert.1, @ImplicitAs(%Dest) [symbolic]
- // CHECK:STDOUT: %Convert.1: %Convert.type.1 = struct_value () [symbolic]
- // CHECK:STDOUT: %.1: type = facet_access_type %Self.2 [symbolic]
- // CHECK:STDOUT: %.2: type = assoc_entity_type %ImplicitAs.type.2, %Convert.type.1 [symbolic]
- // CHECK:STDOUT: %.3: %.2 = assoc_entity element0, imports.%import_ref.11 [symbolic]
- // CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.2, @impl.1(%N) [symbolic]
- // CHECK:STDOUT: %Convert.2: %Convert.type.2 = struct_value () [symbolic]
- // CHECK:STDOUT: %.4: <witness> = interface_witness (%Convert.2) [symbolic]
- // CHECK:STDOUT: %.5: type = facet_access_type %Self.1 [symbolic]
- // CHECK:STDOUT: %uN: type = int_type unsigned, %N [symbolic]
- // CHECK:STDOUT: %ImplicitAs.type.4: type = facet_type <@ImplicitAs, @ImplicitAs(%uN)> [symbolic]
- // CHECK:STDOUT: %Convert.type.3: type = fn_type @Convert.3, @impl.2(%N) [symbolic]
- // CHECK:STDOUT: %Convert.3: %Convert.type.3 = struct_value () [symbolic]
- // CHECK:STDOUT: %.6: <witness> = interface_witness (%Convert.3) [symbolic]
- // CHECK:STDOUT: %ImplicitAs.type.5: type = facet_type <@ImplicitAs, @ImplicitAs(Core.IntLiteral)> [template]
- // CHECK:STDOUT: %Convert.type.4: type = fn_type @Convert.4, @impl.3(%N) [symbolic]
- // CHECK:STDOUT: %Convert.4: %Convert.type.4 = struct_value () [symbolic]
- // CHECK:STDOUT: %.7: <witness> = interface_witness (%Convert.4) [symbolic]
- // CHECK:STDOUT: %Convert.type.5: type = fn_type @Convert.1, @ImplicitAs(Core.IntLiteral) [template]
- // CHECK:STDOUT: %Convert.5: %Convert.type.5 = struct_value () [template]
- // CHECK:STDOUT: %.8: type = assoc_entity_type %ImplicitAs.type.5, %Convert.type.5 [template]
- // CHECK:STDOUT: %.9: %.8 = assoc_entity element0, imports.%import_ref.18 [template]
- // CHECK:STDOUT: %Convert.type.6: type = fn_type @Convert.5, @impl.4(%N) [symbolic]
- // CHECK:STDOUT: %Convert.6: %Convert.type.6 = struct_value () [symbolic]
- // CHECK:STDOUT: %.10: <witness> = interface_witness (%Convert.6) [symbolic]
- // CHECK:STDOUT: %As.type.2: type = facet_type <@As, @As(%Dest)> [symbolic]
- // CHECK:STDOUT: %Self.3: @As.%As.type (%As.type.2) = bind_symbolic_name Self, 1 [symbolic]
- // CHECK:STDOUT: %As.type.3: type = facet_type <@As, @As(%iN)> [symbolic]
- // CHECK:STDOUT: %Self.4: %As.type.2 = bind_symbolic_name Self, 1 [symbolic]
- // CHECK:STDOUT: %Convert.type.7: type = fn_type @Convert.6, @As(%Dest) [symbolic]
- // CHECK:STDOUT: %Convert.7: %Convert.type.7 = struct_value () [symbolic]
- // CHECK:STDOUT: %.11: type = facet_access_type %Self.4 [symbolic]
- // CHECK:STDOUT: %.12: type = assoc_entity_type %As.type.2, %Convert.type.7 [symbolic]
- // CHECK:STDOUT: %.13: %.12 = assoc_entity element0, imports.%import_ref.28 [symbolic]
- // CHECK:STDOUT: %Convert.type.8: type = fn_type @Convert.7, @impl.5(%N) [symbolic]
- // CHECK:STDOUT: %Convert.8: %Convert.type.8 = struct_value () [symbolic]
- // CHECK:STDOUT: %.14: <witness> = interface_witness (%Convert.8) [symbolic]
- // CHECK:STDOUT: %.15: type = facet_access_type %Self.3 [symbolic]
- // CHECK:STDOUT: %As.type.4: type = facet_type <@As, @As(%uN)> [symbolic]
- // CHECK:STDOUT: %Convert.type.9: type = fn_type @Convert.8, @impl.6(%N) [symbolic]
- // CHECK:STDOUT: %Convert.9: %Convert.type.9 = struct_value () [symbolic]
- // CHECK:STDOUT: %.16: <witness> = interface_witness (%Convert.9) [symbolic]
- // CHECK:STDOUT: %As.type.5: type = facet_type <@As, @As(Core.IntLiteral)> [template]
- // CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.9, @impl.7(%N) [symbolic]
- // CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [symbolic]
- // CHECK:STDOUT: %.17: <witness> = interface_witness (%Convert.10) [symbolic]
- // CHECK:STDOUT: %Convert.type.11: type = fn_type @Convert.6, @As(Core.IntLiteral) [template]
- // CHECK:STDOUT: %Convert.11: %Convert.type.11 = struct_value () [template]
- // CHECK:STDOUT: %.18: type = assoc_entity_type %As.type.5, %Convert.type.11 [template]
- // CHECK:STDOUT: %.19: %.18 = assoc_entity element0, imports.%import_ref.35 [template]
- // CHECK:STDOUT: %Convert.type.12: type = fn_type @Convert.10, @impl.8(%N) [symbolic]
- // CHECK:STDOUT: %Convert.12: %Convert.type.12 = struct_value () [symbolic]
- // CHECK:STDOUT: %.20: <witness> = interface_witness (%Convert.12) [symbolic]
- // CHECK:STDOUT: %C.type: type = generic_class_type @C [template]
- // CHECK:STDOUT: %C.1: %C.type = struct_value () [template]
- // CHECK:STDOUT: %.23: Core.IntLiteral = int_value 32 [template]
- // CHECK:STDOUT: %i32: type = int_type signed, %.23 [template]
- // CHECK:STDOUT: %tuple.type.1: type = tuple_type (%i32, %i32) [template]
- // CHECK:STDOUT: %X: %tuple.type.1 = bind_symbolic_name X, 0 [symbolic]
- // CHECK:STDOUT: %X.patt: %tuple.type.1 = symbolic_binding_pattern X, 0 [symbolic]
- // CHECK:STDOUT: %.24: Core.IntLiteral = int_value 3 [template]
- // CHECK:STDOUT: %.25: Core.IntLiteral = int_value 4 [template]
- // CHECK:STDOUT: %tuple.type.2: type = tuple_type (Core.IntLiteral, Core.IntLiteral) [template]
- // CHECK:STDOUT: %ImplicitAs.type.6: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [template]
- // CHECK:STDOUT: %Convert.type.13: type = fn_type @Convert.1, @ImplicitAs(%i32) [template]
- // CHECK:STDOUT: %Convert.13: %Convert.type.13 = struct_value () [template]
- // CHECK:STDOUT: %.27: type = assoc_entity_type %ImplicitAs.type.6, %Convert.type.13 [template]
- // CHECK:STDOUT: %.28: %.27 = assoc_entity element0, imports.%import_ref.11 [template]
- // CHECK:STDOUT: %.29: %.2 = assoc_entity element0, imports.%import_ref.41 [symbolic]
- // CHECK:STDOUT: %Convert.type.14: type = fn_type @Convert.2, @impl.1(%.23) [template]
- // CHECK:STDOUT: %Convert.14: %Convert.type.14 = struct_value () [template]
- // CHECK:STDOUT: %.30: <witness> = interface_witness (%Convert.14) [template]
- // CHECK:STDOUT: %.31: <bound method> = bound_method %.24, %Convert.14 [template]
- // CHECK:STDOUT: %.32: <specific function> = specific_function %.31, @Convert.2(%.23) [template]
- // CHECK:STDOUT: %.33: %i32 = int_value 3 [template]
- // CHECK:STDOUT: %.34: <bound method> = bound_method %.25, %Convert.14 [template]
- // CHECK:STDOUT: %.35: <specific function> = specific_function %.34, @Convert.2(%.23) [template]
- // CHECK:STDOUT: %.36: %i32 = int_value 4 [template]
- // CHECK:STDOUT: %tuple.1: %tuple.type.1 = tuple_value (%.33, %.36) [template]
- // CHECK:STDOUT: %C.3: type = class_type @C, @C(%tuple.1) [template]
- // CHECK:STDOUT: %F.type: type = fn_type @F [template]
- // CHECK:STDOUT: %F: %F.type = struct_value () [template]
- // CHECK:STDOUT: %.38: %i32 = int_value 2 [template]
- // CHECK:STDOUT: %.39: %i32 = int_value 1 [template]
- // CHECK:STDOUT: %tuple.2: %tuple.type.1 = tuple_value (%.39, %.38) [template]
- // CHECK:STDOUT: %C.4: type = class_type @C, @C(%tuple.2) [template]
- // CHECK:STDOUT: %ImplicitAs.type.7: type = facet_type <@ImplicitAs, @ImplicitAs(%C.3)> [template]
- // CHECK:STDOUT: %Convert.type.15: type = fn_type @Convert.1, @ImplicitAs(%C.3) [template]
- // CHECK:STDOUT: %Convert.15: %Convert.type.15 = struct_value () [template]
- // CHECK:STDOUT: %.40: type = assoc_entity_type %ImplicitAs.type.7, %Convert.type.15 [template]
- // CHECK:STDOUT: %.41: %.40 = assoc_entity element0, imports.%import_ref.11 [template]
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: imports {
- // CHECK:STDOUT: %import_ref.1 = import_ref Implicit//default, inst+24, unloaded
- // CHECK:STDOUT: %import_ref.2 = import_ref Implicit//default, inst+370, unloaded
- // CHECK:STDOUT: %import_ref.3: %C.type = import_ref Implicit//default, inst+453, loaded [template = constants.%C.1]
- // CHECK:STDOUT: %import_ref.4: %F.type = import_ref Implicit//default, inst+487, loaded [template = constants.%F]
- // CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [template] {
- // CHECK:STDOUT: .ImplicitAs = %import_ref.40
- // CHECK:STDOUT: import Core//prelude
- // CHECK:STDOUT: import Core//prelude/...
- // CHECK:STDOUT: }
- // CHECK:STDOUT: %import_ref.5 = import_ref Implicit//default, inst+40, unloaded
- // CHECK:STDOUT: %import_ref.6: @ImplicitAs.%.1 (%.2) = import_ref Implicit//default, inst+41, loaded [symbolic = @ImplicitAs.%.2 (constants.%.29)]
- // CHECK:STDOUT: %import_ref.7 = import_ref Implicit//default, inst+42, unloaded
- // CHECK:STDOUT: %import_ref.8: type = import_ref Implicit//default, inst+83, loaded [template = Core.IntLiteral]
- // CHECK:STDOUT: %import_ref.9: type = import_ref Implicit//default, inst+84, loaded [symbolic = @impl.1.%ImplicitAs.type (constants.%ImplicitAs.type.3)]
- // CHECK:STDOUT: %import_ref.10: <witness> = import_ref Implicit//default, inst+85, loaded [symbolic = @impl.1.%.1 (constants.%.4)]
- // CHECK:STDOUT: %import_ref.11 = import_ref Implicit//default, inst+56, unloaded
- // CHECK:STDOUT: %import_ref.12: type = import_ref Implicit//default, inst+109, loaded [template = Core.IntLiteral]
- // CHECK:STDOUT: %import_ref.13: type = import_ref Implicit//default, inst+110, loaded [symbolic = @impl.2.%ImplicitAs.type (constants.%ImplicitAs.type.4)]
- // CHECK:STDOUT: %import_ref.14 = import_ref Implicit//default, inst+111, unloaded
- // CHECK:STDOUT: %import_ref.15: type = import_ref Implicit//default, inst+134, loaded [symbolic = @impl.3.%iN (constants.%iN)]
- // CHECK:STDOUT: %import_ref.16: type = import_ref Implicit//default, inst+135, loaded [template = constants.%ImplicitAs.type.5]
- // CHECK:STDOUT: %import_ref.17 = import_ref Implicit//default, inst+136, unloaded
- // CHECK:STDOUT: %import_ref.19: type = import_ref Implicit//default, inst+162, loaded [symbolic = @impl.4.%uN (constants.%uN)]
- // CHECK:STDOUT: %import_ref.20: type = import_ref Implicit//default, inst+163, loaded [template = constants.%ImplicitAs.type.5]
- // CHECK:STDOUT: %import_ref.21 = import_ref Implicit//default, inst+164, unloaded
- // CHECK:STDOUT: %import_ref.22 = import_ref Implicit//default, inst+190, unloaded
- // CHECK:STDOUT: %import_ref.23 = import_ref Implicit//default, inst+191, unloaded
- // CHECK:STDOUT: %import_ref.24 = import_ref Implicit//default, inst+192, unloaded
- // CHECK:STDOUT: %import_ref.25: type = import_ref Implicit//default, inst+196, loaded [template = Core.IntLiteral]
- // CHECK:STDOUT: %import_ref.26: type = import_ref Implicit//default, inst+197, loaded [symbolic = @impl.5.%As.type (constants.%As.type.3)]
- // CHECK:STDOUT: %import_ref.27 = import_ref Implicit//default, inst+198, unloaded
- // CHECK:STDOUT: %import_ref.28 = import_ref Implicit//default, inst+212, unloaded
- // CHECK:STDOUT: %import_ref.29: type = import_ref Implicit//default, inst+247, loaded [template = Core.IntLiteral]
- // CHECK:STDOUT: %import_ref.30: type = import_ref Implicit//default, inst+248, loaded [symbolic = @impl.6.%As.type (constants.%As.type.4)]
- // CHECK:STDOUT: %import_ref.31 = import_ref Implicit//default, inst+249, unloaded
- // CHECK:STDOUT: %import_ref.32: type = import_ref Implicit//default, inst+272, loaded [symbolic = @impl.7.%iN (constants.%iN)]
- // CHECK:STDOUT: %import_ref.33: type = import_ref Implicit//default, inst+273, loaded [template = constants.%As.type.5]
- // CHECK:STDOUT: %import_ref.34 = import_ref Implicit//default, inst+274, unloaded
- // CHECK:STDOUT: %import_ref.36: type = import_ref Implicit//default, inst+300, loaded [symbolic = @impl.8.%uN (constants.%uN)]
- // CHECK:STDOUT: %import_ref.37: type = import_ref Implicit//default, inst+301, loaded [template = constants.%As.type.5]
- // CHECK:STDOUT: %import_ref.38 = import_ref Implicit//default, inst+302, unloaded
- // CHECK:STDOUT: %import_ref.39 = import_ref Implicit//default, inst+458, unloaded
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: file {
- // CHECK:STDOUT: package: <namespace> = namespace [template] {
- // CHECK:STDOUT: .a_ref = imports.%import_ref.1
- // CHECK:STDOUT: .b_ref = imports.%import_ref.2
- // CHECK:STDOUT: .C = imports.%import_ref.3
- // CHECK:STDOUT: .F = imports.%import_ref.4
- // CHECK:STDOUT: .Core = imports.%Core
- // CHECK:STDOUT: .c_bad = %c_bad
- // CHECK:STDOUT: }
- // CHECK:STDOUT: %Implicit.import = import Implicit
- // CHECK:STDOUT: %default.import = import <invalid>
- // CHECK:STDOUT: %Core.import = import Core
- // CHECK:STDOUT: %C.ref: %C.type = name_ref C, imports.%import_ref.3 [template = constants.%C.1]
- // CHECK:STDOUT: %.loc10_15: Core.IntLiteral = int_value 3 [template = constants.%.24]
- // CHECK:STDOUT: %.loc10_18: Core.IntLiteral = int_value 4 [template = constants.%.25]
- // CHECK:STDOUT: %.loc10_19.1: %tuple.type.2 = tuple_literal (%.loc10_15, %.loc10_18)
- // CHECK:STDOUT: %.loc10_19.2: %Convert.type.13 = interface_witness_access constants.%.30, element0 [template = constants.%Convert.14]
- // CHECK:STDOUT: %.loc10_19.3: <bound method> = bound_method %.loc10_15, %.loc10_19.2 [template = constants.%.31]
- // CHECK:STDOUT: %.loc10_19.4: <specific function> = specific_function %.loc10_19.3, @Convert.2(constants.%.23) [template = constants.%.32]
- // CHECK:STDOUT: %int.convert_checked.loc10_19.1: init %i32 = call %.loc10_19.4(%.loc10_15) [template = constants.%.33]
- // CHECK:STDOUT: %.loc10_19.5: %i32 = value_of_initializer %int.convert_checked.loc10_19.1 [template = constants.%.33]
- // CHECK:STDOUT: %.loc10_19.6: %i32 = converted %.loc10_15, %.loc10_19.5 [template = constants.%.33]
- // CHECK:STDOUT: %.loc10_19.7: %Convert.type.13 = interface_witness_access constants.%.30, element0 [template = constants.%Convert.14]
- // CHECK:STDOUT: %.loc10_19.8: <bound method> = bound_method %.loc10_18, %.loc10_19.7 [template = constants.%.34]
- // CHECK:STDOUT: %.loc10_19.9: <specific function> = specific_function %.loc10_19.8, @Convert.2(constants.%.23) [template = constants.%.35]
- // CHECK:STDOUT: %int.convert_checked.loc10_19.2: init %i32 = call %.loc10_19.9(%.loc10_18) [template = constants.%.36]
- // CHECK:STDOUT: %.loc10_19.10: %i32 = value_of_initializer %int.convert_checked.loc10_19.2 [template = constants.%.36]
- // CHECK:STDOUT: %.loc10_19.11: %i32 = converted %.loc10_18, %.loc10_19.10 [template = constants.%.36]
- // CHECK:STDOUT: %tuple: %tuple.type.1 = tuple_value (%.loc10_19.6, %.loc10_19.11) [template = constants.%tuple.1]
- // CHECK:STDOUT: %.loc10_13: %tuple.type.1 = converted %.loc10_19.1, %tuple [template = constants.%tuple.1]
- // CHECK:STDOUT: %C: type = class_type @C, @C(constants.%tuple.1) [template = constants.%C.3]
- // CHECK:STDOUT: %c_bad.var: ref %C.3 = var c_bad
- // CHECK:STDOUT: %c_bad: ref %C.3 = bind_name c_bad, %c_bad.var
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: generic interface @ImplicitAs(constants.%Dest: type) {
- // CHECK:STDOUT: %Dest: type = bind_symbolic_name Dest, 0 [symbolic = %Dest (constants.%Dest)]
- // CHECK:STDOUT: %Dest.patt: type = symbolic_binding_pattern Dest, 0 [symbolic = %Dest.patt (constants.%Dest.patt)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(%Dest)> [symbolic = %ImplicitAs.type (constants.%ImplicitAs.type.2)]
- // CHECK:STDOUT: %Self: %ImplicitAs.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.2)]
- // CHECK:STDOUT: %Convert.type: type = fn_type @Convert.1, @ImplicitAs(%Dest) [symbolic = %Convert.type (constants.%Convert.type.1)]
- // CHECK:STDOUT: %Convert: @ImplicitAs.%Convert.type (%Convert.type.1) = struct_value () [symbolic = %Convert (constants.%Convert.1)]
- // CHECK:STDOUT: %.1: type = assoc_entity_type @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.2), @ImplicitAs.%Convert.type (%Convert.type.1) [symbolic = %.1 (constants.%.2)]
- // CHECK:STDOUT: %.2: @ImplicitAs.%.1 (%.2) = assoc_entity element0, imports.%import_ref.11 [symbolic = %.2 (constants.%.3)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: interface {
- // CHECK:STDOUT: !members:
- // CHECK:STDOUT: .Self = imports.%import_ref.5
- // CHECK:STDOUT: .Convert = imports.%import_ref.6
- // CHECK:STDOUT: witness = (imports.%import_ref.7)
- // CHECK:STDOUT: }
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: generic interface @As(constants.%Dest: type) {
- // CHECK:STDOUT: %Dest: type = bind_symbolic_name Dest, 0 [symbolic = %Dest (constants.%Dest)]
- // CHECK:STDOUT: %Dest.patt: type = symbolic_binding_pattern Dest, 0 [symbolic = %Dest.patt (constants.%Dest.patt)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT: %As.type: type = facet_type <@As, @As(%Dest)> [symbolic = %As.type (constants.%As.type.2)]
- // CHECK:STDOUT: %Self: %As.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.4)]
- // CHECK:STDOUT: %Convert.type: type = fn_type @Convert.6, @As(%Dest) [symbolic = %Convert.type (constants.%Convert.type.7)]
- // CHECK:STDOUT: %Convert: @As.%Convert.type (%Convert.type.7) = struct_value () [symbolic = %Convert (constants.%Convert.7)]
- // CHECK:STDOUT: %.1: type = assoc_entity_type @As.%As.type (%As.type.2), @As.%Convert.type (%Convert.type.7) [symbolic = %.1 (constants.%.12)]
- // CHECK:STDOUT: %.2: @As.%.1 (%.12) = assoc_entity element0, imports.%import_ref.28 [symbolic = %.2 (constants.%.13)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: interface {
- // CHECK:STDOUT: !members:
- // CHECK:STDOUT: .Self = imports.%import_ref.22
- // CHECK:STDOUT: .Convert = imports.%import_ref.23
- // CHECK:STDOUT: witness = (imports.%import_ref.24)
- // CHECK:STDOUT: }
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: generic impl @impl.1(constants.%N: Core.IntLiteral) {
- // CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N (constants.%N)]
- // CHECK:STDOUT: %N.patt: Core.IntLiteral = symbolic_binding_pattern N, 0 [symbolic = %N.patt (constants.%N.patt)]
- // CHECK:STDOUT: %iN: type = int_type signed, %N [symbolic = %iN (constants.%iN)]
- // CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(%iN)> [symbolic = %ImplicitAs.type (constants.%ImplicitAs.type.3)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT: %Convert.type: type = fn_type @Convert.2, @impl.1(%N) [symbolic = %Convert.type (constants.%Convert.type.2)]
- // CHECK:STDOUT: %Convert: @impl.1.%Convert.type (%Convert.type.2) = struct_value () [symbolic = %Convert (constants.%Convert.2)]
- // CHECK:STDOUT: %.1: <witness> = interface_witness (%Convert) [symbolic = %.1 (constants.%.4)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: impl: imports.%import_ref.8 as imports.%import_ref.9 {
- // CHECK:STDOUT: !members:
- // CHECK:STDOUT: witness = imports.%import_ref.10
- // CHECK:STDOUT: }
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: generic impl @impl.2(constants.%N: Core.IntLiteral) {
- // CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N (constants.%N)]
- // CHECK:STDOUT: %N.patt: Core.IntLiteral = symbolic_binding_pattern N, 0 [symbolic = %N.patt (constants.%N.patt)]
- // CHECK:STDOUT: %uN: type = int_type unsigned, %N [symbolic = %uN (constants.%uN)]
- // CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(%uN)> [symbolic = %ImplicitAs.type (constants.%ImplicitAs.type.4)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT: %Convert.type: type = fn_type @Convert.3, @impl.2(%N) [symbolic = %Convert.type (constants.%Convert.type.3)]
- // CHECK:STDOUT: %Convert: @impl.2.%Convert.type (%Convert.type.3) = struct_value () [symbolic = %Convert (constants.%Convert.3)]
- // CHECK:STDOUT: %.1: <witness> = interface_witness (%Convert) [symbolic = %.1 (constants.%.6)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: impl: imports.%import_ref.12 as imports.%import_ref.13 {
- // CHECK:STDOUT: !members:
- // CHECK:STDOUT: witness = imports.%import_ref.14
- // CHECK:STDOUT: }
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: generic impl @impl.3(constants.%N: Core.IntLiteral) {
- // CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N (constants.%N)]
- // CHECK:STDOUT: %N.patt: Core.IntLiteral = symbolic_binding_pattern N, 0 [symbolic = %N.patt (constants.%N.patt)]
- // CHECK:STDOUT: %iN: type = int_type signed, %N [symbolic = %iN (constants.%iN)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT: %Convert.type: type = fn_type @Convert.4, @impl.3(%N) [symbolic = %Convert.type (constants.%Convert.type.4)]
- // CHECK:STDOUT: %Convert: @impl.3.%Convert.type (%Convert.type.4) = struct_value () [symbolic = %Convert (constants.%Convert.4)]
- // CHECK:STDOUT: %.1: <witness> = interface_witness (%Convert) [symbolic = %.1 (constants.%.7)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: impl: imports.%import_ref.15 as imports.%import_ref.16 {
- // CHECK:STDOUT: !members:
- // CHECK:STDOUT: witness = imports.%import_ref.17
- // CHECK:STDOUT: }
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: generic impl @impl.4(constants.%N: Core.IntLiteral) {
- // CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N (constants.%N)]
- // CHECK:STDOUT: %N.patt: Core.IntLiteral = symbolic_binding_pattern N, 0 [symbolic = %N.patt (constants.%N.patt)]
- // CHECK:STDOUT: %uN: type = int_type unsigned, %N [symbolic = %uN (constants.%uN)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT: %Convert.type: type = fn_type @Convert.5, @impl.4(%N) [symbolic = %Convert.type (constants.%Convert.type.6)]
- // CHECK:STDOUT: %Convert: @impl.4.%Convert.type (%Convert.type.6) = struct_value () [symbolic = %Convert (constants.%Convert.6)]
- // CHECK:STDOUT: %.1: <witness> = interface_witness (%Convert) [symbolic = %.1 (constants.%.10)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: impl: imports.%import_ref.19 as imports.%import_ref.20 {
- // CHECK:STDOUT: !members:
- // CHECK:STDOUT: witness = imports.%import_ref.21
- // CHECK:STDOUT: }
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: generic impl @impl.5(constants.%N: Core.IntLiteral) {
- // CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N (constants.%N)]
- // CHECK:STDOUT: %N.patt: Core.IntLiteral = symbolic_binding_pattern N, 0 [symbolic = %N.patt (constants.%N.patt)]
- // CHECK:STDOUT: %iN: type = int_type signed, %N [symbolic = %iN (constants.%iN)]
- // CHECK:STDOUT: %As.type: type = facet_type <@As, @As(%iN)> [symbolic = %As.type (constants.%As.type.3)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT: %Convert.type: type = fn_type @Convert.7, @impl.5(%N) [symbolic = %Convert.type (constants.%Convert.type.8)]
- // CHECK:STDOUT: %Convert: @impl.5.%Convert.type (%Convert.type.8) = struct_value () [symbolic = %Convert (constants.%Convert.8)]
- // CHECK:STDOUT: %.1: <witness> = interface_witness (%Convert) [symbolic = %.1 (constants.%.14)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: impl: imports.%import_ref.25 as imports.%import_ref.26 {
- // CHECK:STDOUT: !members:
- // CHECK:STDOUT: witness = imports.%import_ref.27
- // CHECK:STDOUT: }
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: generic impl @impl.6(constants.%N: Core.IntLiteral) {
- // CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N (constants.%N)]
- // CHECK:STDOUT: %N.patt: Core.IntLiteral = symbolic_binding_pattern N, 0 [symbolic = %N.patt (constants.%N.patt)]
- // CHECK:STDOUT: %uN: type = int_type unsigned, %N [symbolic = %uN (constants.%uN)]
- // CHECK:STDOUT: %As.type: type = facet_type <@As, @As(%uN)> [symbolic = %As.type (constants.%As.type.4)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT: %Convert.type: type = fn_type @Convert.8, @impl.6(%N) [symbolic = %Convert.type (constants.%Convert.type.9)]
- // CHECK:STDOUT: %Convert: @impl.6.%Convert.type (%Convert.type.9) = struct_value () [symbolic = %Convert (constants.%Convert.9)]
- // CHECK:STDOUT: %.1: <witness> = interface_witness (%Convert) [symbolic = %.1 (constants.%.16)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: impl: imports.%import_ref.29 as imports.%import_ref.30 {
- // CHECK:STDOUT: !members:
- // CHECK:STDOUT: witness = imports.%import_ref.31
- // CHECK:STDOUT: }
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: generic impl @impl.7(constants.%N: Core.IntLiteral) {
- // CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N (constants.%N)]
- // CHECK:STDOUT: %N.patt: Core.IntLiteral = symbolic_binding_pattern N, 0 [symbolic = %N.patt (constants.%N.patt)]
- // CHECK:STDOUT: %iN: type = int_type signed, %N [symbolic = %iN (constants.%iN)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT: %Convert.type: type = fn_type @Convert.9, @impl.7(%N) [symbolic = %Convert.type (constants.%Convert.type.10)]
- // CHECK:STDOUT: %Convert: @impl.7.%Convert.type (%Convert.type.10) = struct_value () [symbolic = %Convert (constants.%Convert.10)]
- // CHECK:STDOUT: %.1: <witness> = interface_witness (%Convert) [symbolic = %.1 (constants.%.17)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: impl: imports.%import_ref.32 as imports.%import_ref.33 {
- // CHECK:STDOUT: !members:
- // CHECK:STDOUT: witness = imports.%import_ref.34
- // CHECK:STDOUT: }
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: generic impl @impl.8(constants.%N: Core.IntLiteral) {
- // CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N (constants.%N)]
- // CHECK:STDOUT: %N.patt: Core.IntLiteral = symbolic_binding_pattern N, 0 [symbolic = %N.patt (constants.%N.patt)]
- // CHECK:STDOUT: %uN: type = int_type unsigned, %N [symbolic = %uN (constants.%uN)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT: %Convert.type: type = fn_type @Convert.10, @impl.8(%N) [symbolic = %Convert.type (constants.%Convert.type.12)]
- // CHECK:STDOUT: %Convert: @impl.8.%Convert.type (%Convert.type.12) = struct_value () [symbolic = %Convert (constants.%Convert.12)]
- // CHECK:STDOUT: %.1: <witness> = interface_witness (%Convert) [symbolic = %.1 (constants.%.20)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: impl: imports.%import_ref.36 as imports.%import_ref.37 {
- // CHECK:STDOUT: !members:
- // CHECK:STDOUT: witness = imports.%import_ref.38
- // CHECK:STDOUT: }
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: generic class @C(constants.%X: %tuple.type.1) {
- // CHECK:STDOUT: %X: %tuple.type.1 = bind_symbolic_name X, 0 [symbolic = %X (constants.%X)]
- // CHECK:STDOUT: %X.patt: %tuple.type.1 = symbolic_binding_pattern X, 0 [symbolic = %X.patt (constants.%X.patt)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT:
- // CHECK:STDOUT: class {
- // CHECK:STDOUT: !members:
- // CHECK:STDOUT: .Self = imports.%import_ref.39
- // CHECK:STDOUT: }
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: generic fn @Convert.1(constants.%Dest: type, constants.%Self.1: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.2)) {
- // CHECK:STDOUT: %Dest: type = bind_symbolic_name Dest, 0 [symbolic = %Dest (constants.%Dest)]
- // CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(%Dest)> [symbolic = %ImplicitAs.type (constants.%ImplicitAs.type.2)]
- // CHECK:STDOUT: %Self: %ImplicitAs.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.2)]
- // CHECK:STDOUT: %.1: type = facet_access_type %Self [symbolic = %.1 (constants.%.1)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: fn[%self.param_patt: @Convert.1.%.1 (%.1)]() -> @Convert.1.%Dest (%Dest);
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: generic fn @Convert.2(constants.%N: Core.IntLiteral) {
- // CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N (constants.%N)]
- // CHECK:STDOUT: %iN: type = int_type signed, %N [symbolic = %iN (constants.%iN)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT:
- // CHECK:STDOUT: fn[%self.param_patt: Core.IntLiteral]() -> @Convert.2.%iN (%iN) = "int.convert_checked";
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: generic fn @Convert.3(constants.%N: Core.IntLiteral) {
- // CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N (constants.%N)]
- // CHECK:STDOUT: %uN: type = int_type unsigned, %N [symbolic = %uN (constants.%uN)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT:
- // CHECK:STDOUT: fn[%self.param_patt: Core.IntLiteral]() -> @Convert.3.%uN (%uN) = "int.convert_checked";
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: generic fn @Convert.4(constants.%N: Core.IntLiteral) {
- // CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N (constants.%N)]
- // CHECK:STDOUT: %iN: type = int_type signed, %N [symbolic = %iN (constants.%iN)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT:
- // CHECK:STDOUT: fn[%self.param_patt: @Convert.4.%iN (%iN)]() -> Core.IntLiteral = "int.convert_checked";
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: generic fn @Convert.5(constants.%N: Core.IntLiteral) {
- // CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N (constants.%N)]
- // CHECK:STDOUT: %uN: type = int_type unsigned, %N [symbolic = %uN (constants.%uN)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT:
- // CHECK:STDOUT: fn[%self.param_patt: @Convert.5.%uN (%uN)]() -> Core.IntLiteral = "int.convert_checked";
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: generic fn @Convert.6(constants.%Dest: type, constants.%Self.3: @As.%As.type (%As.type.2)) {
- // CHECK:STDOUT: %Dest: type = bind_symbolic_name Dest, 0 [symbolic = %Dest (constants.%Dest)]
- // CHECK:STDOUT: %As.type: type = facet_type <@As, @As(%Dest)> [symbolic = %As.type (constants.%As.type.2)]
- // CHECK:STDOUT: %Self: %As.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.4)]
- // CHECK:STDOUT: %.1: type = facet_access_type %Self [symbolic = %.1 (constants.%.11)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: fn[%self.param_patt: @Convert.6.%.1 (%.11)]() -> @Convert.6.%Dest (%Dest);
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: generic fn @Convert.7(constants.%N: Core.IntLiteral) {
- // CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N (constants.%N)]
- // CHECK:STDOUT: %iN: type = int_type signed, %N [symbolic = %iN (constants.%iN)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT:
- // CHECK:STDOUT: fn[%self.param_patt: Core.IntLiteral]() -> @Convert.7.%iN (%iN) = "int.convert_checked";
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: generic fn @Convert.8(constants.%N: Core.IntLiteral) {
- // CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N (constants.%N)]
- // CHECK:STDOUT: %uN: type = int_type unsigned, %N [symbolic = %uN (constants.%uN)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT:
- // CHECK:STDOUT: fn[%self.param_patt: Core.IntLiteral]() -> @Convert.8.%uN (%uN) = "int.convert_checked";
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: generic fn @Convert.9(constants.%N: Core.IntLiteral) {
- // CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N (constants.%N)]
- // CHECK:STDOUT: %iN: type = int_type signed, %N [symbolic = %iN (constants.%iN)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT:
- // CHECK:STDOUT: fn[%self.param_patt: @Convert.9.%iN (%iN)]() -> Core.IntLiteral = "int.convert_checked";
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: generic fn @Convert.10(constants.%N: Core.IntLiteral) {
- // CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N (constants.%N)]
- // CHECK:STDOUT: %uN: type = int_type unsigned, %N [symbolic = %uN (constants.%uN)]
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT:
- // CHECK:STDOUT: fn[%self.param_patt: @Convert.10.%uN (%uN)]() -> Core.IntLiteral = "int.convert_checked";
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: fn @F() -> %C.4;
- // CHECK:STDOUT:
- // CHECK:STDOUT: fn @__global_init() {
- // CHECK:STDOUT: !entry:
- // CHECK:STDOUT: %F.ref: %F.type = name_ref F, imports.%import_ref.4 [template = constants.%F]
- // CHECK:STDOUT: %.loc10_25: ref %C.4 = temporary_storage
- // CHECK:STDOUT: %F.call: init %C.4 = call %F.ref() to %.loc10_25
- // CHECK:STDOUT: %.loc10_27: %C.3 = converted %F.call, <error> [template = <error>]
- // CHECK:STDOUT: assign file.%c_bad.var, <error>
- // CHECK:STDOUT: return
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @ImplicitAs(constants.%Dest) {
- // CHECK:STDOUT: %Dest => constants.%Dest
- // CHECK:STDOUT: %Dest.patt => constants.%Dest
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @ImplicitAs(constants.%iN) {
- // CHECK:STDOUT: %Dest => constants.%iN
- // CHECK:STDOUT: %Dest.patt => constants.%iN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @ImplicitAs(%Dest) {
- // CHECK:STDOUT: %Dest => constants.%Dest
- // CHECK:STDOUT: %Dest.patt => constants.%Dest
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @ImplicitAs(@impl.1.%iN) {
- // CHECK:STDOUT: %Dest => constants.%iN
- // CHECK:STDOUT: %Dest.patt => constants.%iN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @impl.1(constants.%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %N.patt => constants.%N
- // CHECK:STDOUT: %iN => constants.%iN
- // CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.3
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @impl.1(%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %N.patt => constants.%N
- // CHECK:STDOUT: %iN => constants.%iN
- // CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.3
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @ImplicitAs(@Convert.1.%Dest) {
- // CHECK:STDOUT: %Dest => constants.%Dest
- // CHECK:STDOUT: %Dest.patt => constants.%Dest
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @Convert.1(constants.%Dest, constants.%Self.1) {
- // CHECK:STDOUT: %Dest => constants.%Dest
- // CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.2
- // CHECK:STDOUT: %Self => constants.%Self.1
- // CHECK:STDOUT: %.1 => constants.%.5
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @Convert.2(constants.%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %iN => constants.%iN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @ImplicitAs(constants.%uN) {
- // CHECK:STDOUT: %Dest => constants.%uN
- // CHECK:STDOUT: %Dest.patt => constants.%uN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @ImplicitAs(@impl.2.%uN) {
- // CHECK:STDOUT: %Dest => constants.%uN
- // CHECK:STDOUT: %Dest.patt => constants.%uN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @impl.2(constants.%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %N.patt => constants.%N
- // CHECK:STDOUT: %uN => constants.%uN
- // CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.4
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @impl.2(%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %N.patt => constants.%N
- // CHECK:STDOUT: %uN => constants.%uN
- // CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.4
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @Convert.3(constants.%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %uN => constants.%uN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @ImplicitAs(Core.IntLiteral) {
- // CHECK:STDOUT: %Dest => Core.IntLiteral
- // CHECK:STDOUT: %Dest.patt => Core.IntLiteral
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.5
- // CHECK:STDOUT: %Self => constants.%Self.2
- // CHECK:STDOUT: %Convert.type => constants.%Convert.type.5
- // CHECK:STDOUT: %Convert => constants.%Convert.5
- // CHECK:STDOUT: %.1 => constants.%.8
- // CHECK:STDOUT: %.2 => constants.%.9
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @impl.3(constants.%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %N.patt => constants.%N
- // CHECK:STDOUT: %iN => constants.%iN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @impl.3(%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %N.patt => constants.%N
- // CHECK:STDOUT: %iN => constants.%iN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @Convert.4(constants.%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %iN => constants.%iN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @impl.4(constants.%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %N.patt => constants.%N
- // CHECK:STDOUT: %uN => constants.%uN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @impl.4(%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %N.patt => constants.%N
- // CHECK:STDOUT: %uN => constants.%uN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @Convert.5(constants.%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %uN => constants.%uN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @As(constants.%Dest) {
- // CHECK:STDOUT: %Dest => constants.%Dest
- // CHECK:STDOUT: %Dest.patt => constants.%Dest
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @As(constants.%iN) {
- // CHECK:STDOUT: %Dest => constants.%iN
- // CHECK:STDOUT: %Dest.patt => constants.%iN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @As(%Dest) {
- // CHECK:STDOUT: %Dest => constants.%Dest
- // CHECK:STDOUT: %Dest.patt => constants.%Dest
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @As(@impl.5.%iN) {
- // CHECK:STDOUT: %Dest => constants.%iN
- // CHECK:STDOUT: %Dest.patt => constants.%iN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @impl.5(constants.%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %N.patt => constants.%N
- // CHECK:STDOUT: %iN => constants.%iN
- // CHECK:STDOUT: %As.type => constants.%As.type.3
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @impl.5(%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %N.patt => constants.%N
- // CHECK:STDOUT: %iN => constants.%iN
- // CHECK:STDOUT: %As.type => constants.%As.type.3
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @As(@Convert.6.%Dest) {
- // CHECK:STDOUT: %Dest => constants.%Dest
- // CHECK:STDOUT: %Dest.patt => constants.%Dest
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @Convert.6(constants.%Dest, constants.%Self.3) {
- // CHECK:STDOUT: %Dest => constants.%Dest
- // CHECK:STDOUT: %As.type => constants.%As.type.2
- // CHECK:STDOUT: %Self => constants.%Self.3
- // CHECK:STDOUT: %.1 => constants.%.15
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @Convert.7(constants.%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %iN => constants.%iN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @As(constants.%uN) {
- // CHECK:STDOUT: %Dest => constants.%uN
- // CHECK:STDOUT: %Dest.patt => constants.%uN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @As(@impl.6.%uN) {
- // CHECK:STDOUT: %Dest => constants.%uN
- // CHECK:STDOUT: %Dest.patt => constants.%uN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @impl.6(constants.%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %N.patt => constants.%N
- // CHECK:STDOUT: %uN => constants.%uN
- // CHECK:STDOUT: %As.type => constants.%As.type.4
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @impl.6(%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %N.patt => constants.%N
- // CHECK:STDOUT: %uN => constants.%uN
- // CHECK:STDOUT: %As.type => constants.%As.type.4
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @Convert.8(constants.%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %uN => constants.%uN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @As(Core.IntLiteral) {
- // CHECK:STDOUT: %Dest => Core.IntLiteral
- // CHECK:STDOUT: %Dest.patt => Core.IntLiteral
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT: %As.type => constants.%As.type.5
- // CHECK:STDOUT: %Self => constants.%Self.4
- // CHECK:STDOUT: %Convert.type => constants.%Convert.type.11
- // CHECK:STDOUT: %Convert => constants.%Convert.11
- // CHECK:STDOUT: %.1 => constants.%.18
- // CHECK:STDOUT: %.2 => constants.%.19
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @impl.7(constants.%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %N.patt => constants.%N
- // CHECK:STDOUT: %iN => constants.%iN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @impl.7(%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %N.patt => constants.%N
- // CHECK:STDOUT: %iN => constants.%iN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @Convert.9(constants.%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %iN => constants.%iN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @impl.8(constants.%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %N.patt => constants.%N
- // CHECK:STDOUT: %uN => constants.%uN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @impl.8(%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %N.patt => constants.%N
- // CHECK:STDOUT: %uN => constants.%uN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @Convert.10(constants.%N) {
- // CHECK:STDOUT: %N => constants.%N
- // CHECK:STDOUT: %uN => constants.%uN
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @C(constants.%X) {
- // CHECK:STDOUT: %X => constants.%X
- // CHECK:STDOUT: %X.patt => constants.%X
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @ImplicitAs(constants.%i32) {
- // CHECK:STDOUT: %Dest => constants.%i32
- // CHECK:STDOUT: %Dest.patt => constants.%i32
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.6
- // CHECK:STDOUT: %Self => constants.%Self.2
- // CHECK:STDOUT: %Convert.type => constants.%Convert.type.13
- // CHECK:STDOUT: %Convert => constants.%Convert.13
- // CHECK:STDOUT: %.1 => constants.%.27
- // CHECK:STDOUT: %.2 => constants.%.28
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @impl.1(constants.%.23) {
- // CHECK:STDOUT: %N => constants.%.23
- // CHECK:STDOUT: %N.patt => constants.%.23
- // CHECK:STDOUT: %iN => constants.%i32
- // CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.6
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT: %Convert.type => constants.%Convert.type.14
- // CHECK:STDOUT: %Convert => constants.%Convert.14
- // CHECK:STDOUT: %.1 => constants.%.30
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @Convert.2(constants.%.23) {
- // CHECK:STDOUT: %N => constants.%.23
- // CHECK:STDOUT: %iN => constants.%i32
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @C(constants.%tuple.1) {
- // CHECK:STDOUT: %X => constants.%tuple.1
- // CHECK:STDOUT: %X.patt => constants.%tuple.1
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @C(constants.%tuple.2) {
- // CHECK:STDOUT: %X => constants.%tuple.2
- // CHECK:STDOUT: %X.patt => constants.%tuple.2
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
- // CHECK:STDOUT: specific @ImplicitAs(constants.%C.3) {
- // CHECK:STDOUT: %Dest => constants.%C.3
- // CHECK:STDOUT: %Dest.patt => constants.%C.3
- // CHECK:STDOUT:
- // CHECK:STDOUT: !definition:
- // CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.7
- // CHECK:STDOUT: %Self => constants.%Self.2
- // CHECK:STDOUT: %Convert.type => constants.%Convert.type.15
- // CHECK:STDOUT: %Convert => constants.%Convert.15
- // CHECK:STDOUT: %.1 => constants.%.40
- // CHECK:STDOUT: %.2 => constants.%.41
- // CHECK:STDOUT: }
- // CHECK:STDOUT:
|