/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 1 8 ĠJetBrains Ġs . r . o . Ġand ĠKotlin ĠProgramming ĠLanguage Ġcontributors . Ċ Ġ* ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe Ġlicense / LICENSE . txt Ġfile . Ċ Ġ*/ Ċ Ċ package Ġorg . jetbrains . kotlin . idea . intent ions Ċ Ċ import Ġcom . intellij . openapi . editor . Editor Ċ import Ġorg . jetbrains . kotlin . builtins . Kotlin Built Ins Ċ import Ġorg . jetbrains . kotlin . config . Language Feature Ċ import Ġorg . jetbrains . kotlin . descriptors . Property Descriptor Ċ import Ġorg . jetbrains . kotlin . descriptors . Variable Descriptor Ċ import Ġorg . jetbrains . kotlin . idea . Kotlin Bundle Ċ import Ġorg . jetbrains . kotlin . idea . cache s . resolve . analyze Ċ import Ġorg . jetbrains . kotlin . idea . core . setType Ċ import Ġorg . jetbrains . kotlin . idea . intent ions . br an ched Transform ations . isNull Expression Ċ import Ġorg . jetbrains . kotlin . idea . project . language Version Settings Ċ import Ġorg . jetbrains . kotlin . lexer . Kt Tokens Ċ import Ġorg . jetbrains . kotlin . psi . Kt Nullable Type Ċ import Ġorg . jetbrains . kotlin . psi . Kt Property Ċ import Ġorg . jetbrains . kotlin . psi . Kt Type Reference Ċ import Ġorg . jetbrains . kotlin . resolve . Binding Context Ċ import Ġorg . jetbrains . kotlin . resolve . is Inline ClassType Ċ import Ġorg . jetbrains . kotlin . resolve . lazy . Body Resolve Mode Ċ import Ġorg . jetbrains . kotlin . types . Type Utils Ċ import Ġorg . jetbrains . kotlin . types . type Util . make NotNull able Ċ Ċ class ĠConvert Nullable Property To Late init Int ention Ġ: ĠSelf Target ing Int ention < Kt Property >( ĊĠĠĠ ĠK t Property :: class . java , ĠKotlin Bundle . message (" convert . to . late init . var ") Ċ ) Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġis Applicable To ( element : ĠK t Property , Ġcaret Offset : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( element . has Modifier ( Kt Tokens . LATE INIT _ KEYWORD ) Ġ|| Ġelement . has Modifier ( Kt Tokens . AB STR ACT _ KEYWORD )) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ(! element . is Var ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġlanguage Version Settings Ġ= Ġelement . language Version Settings ĊĠĠĠĠĠĠĠ Ġif Ġ(! language Version Settings . supports Feature ( Language Feature . Late init Local Variables ) Ġ&& Ġelement . is Local ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ(! language Version Settings . supports Feature ( Language Feature . Late init TopLevel Properties ) Ġ&& Ġelement . is TopLevel ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( element . getter ?. has Body () Ġ!= Ġnull Ġ|| Ġelement . setter ?. has Body () Ġ!= Ġnull ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ(! element . initializer . isNull Expression ()) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġval Ġtype Reference Ġ= Ġelement . type Reference ĊĠĠĠĠĠĠĠ Ġif Ġ( type Reference ?. type Element Ġ! is ĠK t Nullable Type ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= Ġelement . analyze ( Body Resolve Mode . PAR TIAL ) ĊĠĠĠĠĠĠĠ Ġval Ġtype Ġ= Ġcontext [ Binding Context . TYPE , Ġtype Reference ]?. make NotNull able () Ġ?: Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( Kotlin Built Ins . is Primitive Type ( type ) Ġ|| Ġtype . is Inline ClassType () Ġ|| ĠType Utils . is Nullable Type ( type )) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġval Ġdescriptor Ġ= Ġcontext [ Binding Context . DECL AR ATION _ TO _ DESCRIPTOR , Ġelement ] Ġas ? ĠVariable Descriptor Ġ?: Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( descriptor Ġis ĠProperty Descriptor Ġ&& Ġcontext [ Binding Context . BACK ING _ FIELD _ REQUIRED , Ġdescriptor ] Ġ== Ġfalse ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( descriptor . extension Receiver Parameter Ġ!= Ġnull ) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġapply To ( element : ĠK t Property , Ġeditor : ĠEditor ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtype Reference : ĠK t Type Reference Ġ= Ġelement . type Reference Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġnot Nullable Type Ġ= Ġelement . analyze ( Body Resolve Mode . PAR TIAL )[ Binding Context . TYPE , Ġtype Reference ]?. make NotNull able () Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġelement . add Modifier ( Kt Tokens . LATE INIT _ KEYWORD ) ĊĠĠĠĠĠĠĠ Ġelement . setType ( notNullable Type ) ĊĠĠĠĠĠĠĠ Ġelement . initializer Ġ= Ġnull ĊĠĠĠ Ġ} Ċ } Ċ