package Ġorg . move . lang . core . psi . ext Ċ Ċ import Ġcom . intellij . ide . project View . Presentation Data Ċ import Ġcom . intellij . lang . AST Node Ċ import Ġcom . intellij . navigation . Item Presentation Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġorg . move . ide . Mv Icons Ċ import Ġorg . move . lang . core . psi .* Ċ import Ġorg . move . lang . core . psi . impl . Mv Name Identifier Owner Impl Ċ import Ġorg . move . lang . core . resolve . ref . Visibility Ċ import Ġorg . move . lang . core . types . FQ Module Ċ import Ġjavax . swing . Icon Ċ Ċ fun ĠList < Mv Attr >. find Single Item Attr ( name : ĠString ): ĠM v Attr ? Ġ= ĊĠĠĠ Ġthis . find Ġ{ ĊĠĠĠĠĠĠĠ Ġit . attr ItemList . size Ġ== Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġit . attr ItemList . first (). identifier . text Ġ== Ġname ĊĠĠĠ Ġ} Ċ Ċ val ĠM v Module Def . is Test Only : ĠBoolean Ġget () Ġ= Ġthis . attr List . find Single Item Attr (" test _ only ") Ġ!= Ġnull Ċ Ċ fun ĠM v Module Def . defined Address Ref (): ĠM v Address Ref ? Ġ= ĊĠĠĠ Ġthis . address Ref Ġ?: Ġ( this . ancestor Strict < Mv Address Def >()) ?. address Ref Ċ Ċ fun ĠM v Module Def . fq Module (): ĠF Q Module ? Ġ{ ĊĠĠĠ Ġval Ġaddress Ġ= Ġthis . containing Address . normalized () ĊĠĠĠ Ġval Ġname Ġ= Ġthis . name Ġ?: Ġreturn Ġnull ĊĠĠĠ Ġreturn ĠF Q Module ( address , Ġname ) Ċ } Ċ Ċ val ĠM v Module Def . fq Name : ĠString ? ĊĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġaddress Ġ= Ġthis . defined Address Ref ()?. text ?. let Ġ{ Ġ"$ it :: " Ġ} Ġ?: Ġ"" ĊĠĠĠĠĠĠĠ Ġval Ġmodule Ġ= Ġthis . name Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġreturn Ġaddress Ġ+ Ġmodule ĊĠĠĠ Ġ} Ċ Ċ val ĠM v Module Def . friend Modules : ĠSet < FQ Module > ĊĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġblock Ġ= Ġthis . module Block Ġ?: Ġreturn Ġempty Set () ĊĠĠĠĠĠĠĠ Ġval Ġmodule Refs Ġ= Ġblock . friend Statement List . map NotNull Ġ{ Ġit . fq Module Ref Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġfriends Ġ= Ġmutable Set Of < FQ Module >() ĊĠĠĠĠĠĠĠ Ġfor Ġ( module Ref Ġin Ġmodule Refs ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaddress Ġ= Ġmodule Ref . address Ref . to Normalized Address () Ġ?: Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġidentifier Ġ= Ġmodule Ref . identifier ?. text Ġ?: Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfriends . add ( FQ Module ( address , Ġidentifier )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfriends ĊĠĠĠ Ġ} Ċ Ċ fun ĠM v Module Def . all Functions () Ġ= Ġmodule Block ?. function List . or Empty () Ċ Ċ fun ĠM v Module Def . builtin Functions (): ĠList < Mv Function > Ġ{ ĊĠĠĠ Ġreturn ĠlistOf ( ĊĠĠĠĠĠĠĠ Ġcreate Builtin Function (""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/// ĠRemoves Ġ` T ` Ġfrom Ġaddress Ġand Ġreturns Ġit . ĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/// ĠAbort s Ġif Ġaddress Ġdoes Ġnot Ġhold Ġa Ġ` T `. ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnative Ġfun Ġmove _ from < T : Ġkey >( addr : Ġaddress ): ĠT Ġacquire s ĠT ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ", Ġproject ), ĊĠĠĠĠĠĠĠ Ġcreate Builtin Function (""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/// ĠPub lishes Ġ` T ` Ġunder Ġ` signer . address `. ĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/// ĠAbort s Ġif Ġ` signer . address ` Ġalready Ġholds Ġa Ġ` T `. ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnative Ġfun Ġmove _ to < T : Ġkey >( acc : Ġ& signer , Ġres : ĠT ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ", Ġproject ), ĊĠĠĠĠĠĠĠ Ġcreate Builtin Function (" native Ġfun Ġborrow _ global < T : Ġkey >( addr : Ġaddress ): Ġ& T Ġacquire s ĠT ;", Ġproject ), ĊĠĠĠĠĠĠĠ Ġcreate Builtin Function ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" native Ġfun Ġborrow _ global _ mut < T : Ġkey >( addr : Ġaddress ): Ġ& mut ĠT Ġacquire s ĠT ;", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ Ġcreate Builtin Function (""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/// ĠReturns Ġ` true ` Ġif Ġa Ġ` T ` Ġis Ġstored Ġunder Ġaddress ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnative Ġfun Ġexists < T : Ġkey >( addr : Ġaddress ): Ġbool ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ", Ġproject ), ĊĠĠĠĠĠĠĠ Ġcreate Builtin Function (" native Ġfun Ġfreeze < S >( mut _ ref : Ġ& mut ĠS ): Ġ& S ;", Ġproject ), ĊĠĠĠĠĠĠĠ Ġcreate Builtin Function (" native Ġfun Ġassert (_ : Ġbool , Ġerr : Ġu 6 4 ); ", Ġproject ), ĊĠĠĠ Ġ) Ċ } Ċ Ċ fun ĠM v Module Def . functions ( visibility : ĠVisibility ): ĠList < Mv Function > Ġ= ĊĠĠĠ Ġwhen Ġ( visibility ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠVisibility . Public Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġall Functions () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . visibility Ġ== ĠFunction Visibility . PUBLIC Ġ} ĊĠĠĠĠĠĠĠ Ġis ĠVisibility . Public Script Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġall Functions () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . visibility Ġ== ĠFunction Visibility . PUBLIC _ SCRIPT Ġ} ĊĠĠĠĠĠĠĠ Ġis ĠVisibility . Public Friend Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( visibility . current Module Ġin Ġthis . friend Modules ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġall Functions (). filter Ġ{ Ġit . visibility Ġ== ĠFunction Visibility . PUBLIC _ FR I END Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġempty List () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġis ĠVisibility . Internal Ġ-> Ġall Functions () ĊĠĠĠ Ġ} Ċ Ċ fun Ġcreate Builtin Function ( text : ĠString , Ġproject : ĠProject ): ĠM v Function Ġ{ ĊĠĠĠ Ġval Ġtrimmed Text Ġ= Ġtext . trim Indent () ĊĠĠĠ Ġval Ġfunction Ġ= Ġproject . psi Factory . create Function ( trimmed Text , ĠmoduleName Ġ= Ġ" builtin _ functions ") ĊĠĠĠ Ġ( function Ġas ĠM v Function Mixin ). built In Ġ= Ġtrue ĊĠĠĠ Ġreturn Ġfunction Ċ } Ċ Ċ fun ĠM v Module Def . structs (): ĠList < Mv Struct _ > Ġ= Ġmodule Block ?. struct _ List . or Empty () Ċ Ċ fun ĠM v Module Def . const Bindings (): ĠList < Mv Binding Pat > Ġ= ĊĠĠĠ Ġmodule Block ?. const Def List . or Empty (). map NotNull Ġ{ Ġit . binding Pat Ġ} ĊĊ Ċ abstract Ġclass ĠM v Module Def Mixin ( node : ĠAST Node ) Ġ: ĠM v Name Identifier Owner Impl ( node ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠM v Module Def Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġget Icon ( flags : ĠInt ): ĠIcon Ġ= ĠM v Icons . MODULE ĊĊĠĠĠ Ġoverride Ġfun Ġget Presentation (): ĠItem Presentation ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġthis . name Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġval Ġlocation String Ġ= Ġthis . containing Address . text ĊĠĠĠĠĠĠĠ Ġreturn ĠPresentation Data ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocation String , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠM v Icons . MODULE , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġimport Statements : ĠList < Mv Import Statement > ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodule Block ?. import Statement List . or Empty () Ċ } Ċ