package Ġcom . github . su us an 2 go . kotlin fill class . ins pe ctions Ċ Ċ import Ġcom . intellij . code Inspection . Local Quick Fix Ċ import Ġcom . intellij . code Inspection . Problem Descriptor Ċ import Ġcom . intellij . code Inspection . Problems Holder Ċ import Ġcom . intellij . code Inspection . ui . Multiple Checkbox Options Panel Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġorg . jetbrains . kotlin . builtins . Kotlin Built Ins Ċ import Ġorg . jetbrains . kotlin . builtins . isFunction Type Ċ import Ġorg . jetbrains . kotlin . descriptors . Callable Descriptor Ċ import Ġorg . jetbrains . kotlin . descriptors . Class Constructor Descriptor Ċ import Ġorg . jetbrains . kotlin . descriptors . Class Kind Ċ import Ġorg . jetbrains . kotlin . descriptors . Modal ity Ċ import Ġorg . jetbrains . kotlin . descriptors . Simple Function Descriptor Ċ import Ġorg . jetbrains . kotlin . descriptors . Value Parameter Descriptor Ċ import Ġorg . jetbrains . kotlin . idea . cache s . resolve . resolve To Call Ċ import Ġorg . jetbrains . kotlin . idea . core . Collect ing Name Validator Ċ import Ġorg . jetbrains . kotlin . idea . core . Kotlin Name Suggest er Ċ import Ġorg . jetbrains . kotlin . idea . core . Short en References Ċ import Ġorg . jetbrains . kotlin . idea . imports . import able Fq Name Ċ import Ġorg . jetbrains . kotlin . idea . ins pe ctions . Abstract Kotlin Inspection Ċ import Ġorg . jetbrains . kotlin . idea . intent ions . call Expression Ċ import Ġorg . jetbrains . kotlin . load . java . descriptors . Java Callable Member Descriptor Ċ import Ġorg . jetbrains . kotlin . psi . Kt Call Element Ċ import Ġorg . jetbrains . kotlin . psi . Kt Call Expression Ċ import Ġorg . jetbrains . kotlin . psi . Kt Lambda Expression Ċ import Ġorg . jetbrains . kotlin . psi . Kt Psi Factory Ċ import Ġorg . jetbrains . kotlin . psi . Kt Qualified Expression Ċ import Ġorg . jetbrains . kotlin . psi . Kt Value Argument Ċ import Ġorg . jetbrains . kotlin . psi . Kt Value ArgumentList Ċ import Ġorg . jetbrains . kotlin . psi . psi Util . get Strict Parent OfType Ċ import Ġorg . jetbrains . kotlin . psi . value ArgumentList Visitor Ċ import Ġorg . jetbrains . kotlin . resolve . lazy . descriptors . Lazy Class Descriptor Ċ import Ġorg . jetbrains . kotlin . types . Kotlin Type Ċ import Ġjavax . swing . J Component Ċ Ċ class ĠFill Class Inspection ( ĊĠĠĠ Ġ@ Jvm Field Ġvar Ġwithout Default Values : ĠBoolean Ġ= Ġfalse , ĊĠĠĠ Ġ@ Jvm Field Ġvar Ġwithout Default Arguments : ĠBoolean Ġ= Ġfalse Ċ ) Ġ: ĠAbstract Kotlin Inspection () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġbuild Visitor ( ĊĠĠĠĠĠĠĠ Ġholder : ĠPro blems Holder , ĊĠĠĠĠĠĠĠ Ġis On The Fly : ĠBoolean ĊĠĠĠ Ġ) Ġ= Ġvalue ArgumentList Visitor ( fun ( element : ĠK t Value ArgumentList ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdescriptor Ġ= Ġelement . descriptor () Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġif Ġ( descriptor . value Parameters . size Ġ== Ġelement . arguments . size ) Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġdescription Ġ= Ġif Ġ( descriptor Ġis ĠClass Constructor Descriptor ) Ġ" Fill Ġclass Ġconstructor " Ġelse Ġ" Fill Ġfunction " ĊĠĠĠĠĠĠĠ Ġval Ġfix Ġ= ĠFill Class Fix ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġdescription , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwithout Default Values Ġ= Ġwithout Default Values , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwithout Default Arguments Ġ= Ġwithout Default Arguments ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġholder . register Problem ( element , Ġdescription , Ġfix ) ĊĠĠĠ Ġ}) ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Options Panel (): ĠJ Component Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpanel Ġ= ĠMultiple Checkbox Options Panel ( this ) ĊĠĠĠĠĠĠĠ Ġpanel . add Checkbox (" Fill Ġarguments Ġwithout Ġdefault Ġvalues ", Ġ" without Default Values ") ĊĠĠĠĠĠĠĠ Ġpanel . add Checkbox (" Do Ġnot Ġfill Ġdefault Ġarguments ", Ġ" without Default Arguments ") ĊĠĠĠĠĠĠĠ Ġreturn Ġpanel ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun ĠK t Value ArgumentList . descriptor (): ĠCallable Descriptor ? Ġ{ ĊĠĠĠ Ġval Ġcal lee Expression Ġ= Ġget Strict Parent OfType < Kt Call Element >() ?. callee Expression Ġ?: Ġreturn Ġnull ĊĠĠĠ Ġval Ġdescriptor Ġ= Ġcal lee Expression . resolve To Call ()?. result ing Descriptor ĊĠĠĠ Ġif Ġ( descriptor Ġis ĠJava Callable Member Descriptor ) Ġreturn Ġnull ĊĠĠĠ Ġreturn Ġdescriptor . take If Ġ{ Ġit Ġis ĠClass Constructor Descriptor Ġ|| Ġit Ġis ĠSimple Function Descriptor Ġ} Ċ } Ċ Ċ class ĠFill Class Fix ( ĊĠĠĠ Ġprivate Ġval Ġdescription : ĠString , ĊĠĠĠ Ġprivate Ġval Ġwithout Default Values : ĠBoolean , ĊĠĠĠ Ġprivate Ġval Ġwithout Default Arguments : ĠBoolean Ċ ) Ġ: ĠLocal Quick Fix Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠgetName () Ġ= Ġdescription ĊĊĠĠĠ Ġoverride Ġfun Ġget Family Name () Ġ= Ġname ĊĊĠĠĠ Ġoverride Ġfun Ġapply Fix ( project : ĠProject , Ġdescriptor : ĠProblem Descriptor ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġelement Ġ= Ġdescriptor . psi Element Ġas ? ĠK t Value ArgumentList Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġparameters Ġ= Ġelement . descriptor ()?. value Parameters Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġelement . fill Arguments ( parameters ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠK t Value ArgumentList . fill Arguments ( parameters : ĠList < Value Parameter Descriptor >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= Ġthis . arguments ĊĠĠĠĠĠĠĠ Ġval Ġargument Names Ġ= Ġarguments . map NotNull Ġ{ Ġit . get Argument Name ()?. as Name ?. identifier Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġfactory Ġ= ĠK t Psi Factory ( this ) ĊĠĠĠĠĠĠĠ Ġparameters . forEach Indexed Ġ{ Ġindex , Ġparameter Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( arguments . size Ġ> Ġindex Ġ&& Ġ! arguments [ index ]. is Named ()) Ġreturn @ forEach Indexed ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( parameter . name . identifier Ġin Ġargument Names ) Ġreturn @ forEach Indexed ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( without Default Arguments Ġ&& Ġparameter . decl ares DefaultValue ()) Ġreturn @ forEach Indexed ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġadded Ġ= Ġadd Argument ( create DefaultValue Argument ( parameter , Ġfactory )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġargument Expression Ġ= Ġadded . get Argument Expression () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( argument Expression Ġis ĠK t Qualified Expression Ġ|| Ġargument Expression Ġis ĠK t Lambda Expression ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠShort en References . DEFAULT . process ( argument Expression ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate DefaultValue Argument ( ĊĠĠĠĠĠĠĠ Ġparameter : ĠValue Parameter Descriptor , ĊĠĠĠĠĠĠĠ Ġfactory : ĠK t Psi Factory ĊĠĠĠ Ġ): ĠK t Value Argument Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( without Default Values ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfactory . create Argument ( null , Ġparameter . name ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġtype Ġ= Ġparameter . type ĊĠĠĠĠĠĠĠ Ġval ĠdefaultValue Ġ= Ġtype . defaultValue () ĊĠĠĠĠĠĠĠ Ġif Ġ( defaultValue Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfactory . create Argument ( factory . create Expression ( defaultValue ), Ġparameter . name ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġdescriptor Ġ= Ġtype . constructor . declaration Descriptor Ġas ? ĠLazy Class Descriptor ĊĠĠĠĠĠĠĠ Ġval Ġmod ality Ġ= Ġdescriptor ?. modal ity ĊĠĠĠĠĠĠĠ Ġif Ġ( descriptor ?. kind Ġ== ĠClass Kind . ENUM _ CLASS Ġ|| Ġmod ality Ġ== ĠMod ality . AB STR ACT Ġ|| Ġmod ality Ġ== ĠMod ality . SE AL ED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfactory . create Argument ( null , Ġparameter . name ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġfq Name Ġ= Ġdescriptor ?. import able Fq Name ?. asString () ĊĠĠĠĠĠĠĠ Ġval Ġvalue Parameters Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescriptor ?. construct ors ?. first OrNull Ġ{ Ġit Ġis ĠClass Constructor Descriptor Ġ} ?. value Parameters ĊĠĠĠĠĠĠĠ Ġval Ġargument Expression Ġ= Ġif Ġ( fq Name Ġ!= Ġnull Ġ&& Ġvalue Parameters Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( factory . create Expression ("$ fq Name () ")). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcall Expression Ġ= Ġit Ġas ? ĠK t Call Expression Ġ?: Ġ( it Ġas ? ĠK t Qualified Expression )?. call Expression ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall Expression ?. value ArgumentList ?. fill Arguments ( value Parameters ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfactory . create Argument ( argument Expression , Ġparameter . name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠKotlin Type . defaultValue (): ĠString ? Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ ĠKotlin Built Ins . is Boolean ( this ) Ġ-> Ġ" false " ĊĠĠĠĠĠĠĠ ĠKotlin Built Ins . is Char ( this ) Ġ-> Ġ" '' " ĊĠĠĠĠĠĠĠ ĠKotlin Built Ins . is Double ( this ) Ġ-> Ġ" 0 . 0 " ĊĠĠĠĠĠĠĠ ĠKotlin Built Ins . is Float ( this ) Ġ-> Ġ" 0 . 0 f " ĊĠĠĠĠĠĠĠ ĠKotlin Built Ins . is Int ( this ) Ġ|| ĠKotlin Built Ins . is Long ( this ) Ġ|| ĠKotlin Built Ins . is Short ( this ) Ġ-> Ġ" 0 " ĊĠĠĠĠĠĠĠ ĠKotlin Built Ins . is Collection Or Nullable Collection ( this ) Ġ-> Ġ" array Of ()" ĊĠĠĠĠĠĠĠ ĠKotlin Built Ins . is Nullable Any ( this ) Ġ-> Ġ" null " ĊĠĠĠĠĠĠĠ ĠKotlin Built Ins . isString ( this ) Ġ-> Ġ"\" \"" ĊĠĠĠĠĠĠĠ ĠKotlin Built Ins . is List Or Nullable List ( this ) Ġ-> Ġ" listOf ()" ĊĠĠĠĠĠĠĠ ĠKotlin Built Ins . isSet Or Nullable Set ( this ) Ġ-> Ġ" set Of ()" ĊĠĠĠĠĠĠĠ ĠKotlin Built Ins . is Map Or Nullable Map ( this ) Ġ-> Ġ" map Of ()" ĊĠĠĠĠĠĠĠ Ġthis . isFunction Type Ġ-> Ġlambda DefaultValue () ĊĠĠĠĠĠĠĠ Ġthis . is Marked Nullable Ġ-> Ġ" null " ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠKotlin Type . lambda DefaultValue (): ĠString Ġ= Ġbuild String Ġ{ ĊĠĠĠĠĠĠĠ Ġappend ("{ ") ĊĠĠĠĠĠĠĠ Ġif Ġ( arguments . size Ġ> Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalidator Ġ= ĠCollect ing Name Validator () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlambda Parameters Ġ= Ġarguments . drop Last ( 1 ). join ToString ( postfix Ġ= Ġ" -> ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtype Ġ= Ġit . type ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= ĠKotlin Name Suggest er . suggest Names ByType ( type , Ġvalidator , Ġ" param ")[ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalidator . add Name ( name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtype Text Ġ= Ġtype . constructor . declaration Descriptor ?. import able Fq Name ?. asString () Ġ?: Ġtype . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnullable Ġ= Ġif Ġ( type . is Marked Nullable ) Ġ" ?" Ġelse Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ name : Ġ$ type Text $ nullable " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend ( lambda Parameters ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġappend (" }") ĊĠĠĠ Ġ} Ċ } Ċ