/* Ċ Ġ* ĠCopyright Ġ 2 0 1 6 - present ĠG reg ĠSh rag o Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ* Ċ Ġ*/ Ċ Ċ package Ġorg . intellij . clojure . psi Ċ Ċ import Ġcom . intellij . psi . Navig atable Psi Element Ċ import Ġcom . intellij . psi . Psi Code Fragment Ċ import Ġcom . intellij . psi . Psi Element Ċ import Ġcom . intellij . psi . Psi File Ċ import Ġcom . intellij . psi . impl . source . tree . Leaf Psi Element Ċ import Ġcom . intellij . psi . tree . I ElementType Ċ import Ġcom . intellij . psi . tree . IL eaf ElementType Ċ import Ġcom . intellij . util . containers . JB Iterable Ċ import Ġorg . intellij . clojure . Clo jure Constants Ċ import Ġorg . intellij . clojure . lang . Clo jure Language Ċ Ċ enum Ġclass ĠD ialect ( val Ġcore Ns : ĠString ) Ġ{ ĊĠ ĠCL J ( Clo jure Constants . CLO J URE _ CORE ), ĊĠ ĠCL JS ( Clo jure Constants . CL JS _ CORE ), ĊĠ ĠCL JR ( Clo jure Constants . CLO J URE _ CORE ) Ċ } Ċ Ċ enum Ġclass ĠRole Ġ{ ĊĠ ĠNONE , ĠDEF , ĠNS , ĠNAME , ĊĠ ĠR COND , ĠR COND _ S , ĊĠ ĠPRO TOT YPE , ĊĠ ĠARG _ VEC , ĠB ND _ VEC , ĠFIELD _ VEC , ĠB ODY , ĊĠ ĠARG , ĠB ND , ĠFIELD Ġ// Ġcurrently Ġnot Ġset Ċ } Ċ Ċ const Ġval ĠFLAG _ COMMENT ED Ġ= Ġ 0 x 1 Ċ const Ġval ĠFLAG _ QUOT ED Ġ= Ġ 0 x 2 Ċ const Ġval ĠFLAG _ UN QUOT ED Ġ= Ġ 0 x 4 Ċ Ċ interface ĠC Element Ġ: ĠNavig atable Psi Element Ġ{ ĊĠ Ġval Ġrole : ĠRole ĊĠ Ġval Ġdef : ĠI Def ? ĊĠ Ġval Ġresolved Ns : ĠString ? ĊĠ Ġval Ġflags : ĠInt Ċ } Ċ Ċ interface ĠClo jure ElementType Ċ class ĠClo jure TokenType ( name : ĠString ) Ġ: ĠI ElementType ( name , ĠClo jure Language ), ĠI Leaf ElementType Ġ{ ĊĠ Ġoverride Ġfun Ġcreate Leaf Node ( leaf Text : ĠCharSequence ) Ġ= ĠC Token ( this , Ġleaf Text ) Ċ } Ċ class ĠClo jure NodeType ( name : ĠString ) Ġ: ĠI ElementType ( name , ĠClo jure Language ), ĠClo jure ElementType Ċ class ĠC Token ( token Type : ĠClo jure TokenType , Ġtext : ĠCharSequence ) Ġ: ĠLeaf Psi Element ( token Type , Ġtext ) Ċ Ċ interface ĠC File Ġ: ĠPsi File Ġ{ ĊĠ Ġval Ġnamespace : ĠString ĊĊĠ Ġfun Ġdefs ( dialect : ĠD ialect Ġ= ĠD ialect . CL J ): ĠJ B Iterable < C List > Ċ } Ċ Ċ interface ĠC Code Fragment Ġ: ĠC File , ĠPsi Code Fragment Ġ{ ĊĠ Ġfun Ġset Context ( context : ĠPsi Element ?) Ċ } Ċ Ċ interface ĠI Def Ġ{ ĊĠ Ġval Ġtype : ĠString ĊĠ Ġval Ġname : ĠString ĊĠ Ġval Ġnamespace : ĠString Ċ } Ċ Ċ data Ġclass ĠSym Key ( ĊĠĠĠ Ġoverride Ġval Ġname : ĠString , ĊĠĠĠ Ġoverride Ġval Ġnamespace : ĠString , ĊĠĠĠ Ġoverride Ġval Ġtype : ĠString Ċ ) Ġ: ĠI Def Ġ{ ĊĠ Ġconstructor ( def Ġ: ĠI Def ): Ġthis ( def . name , Ġdef . namespace , Ġdef . type ) Ċ } Ċ Ċ class ĠDef ( ĊĠĠĠ Ġval Ġkey : ĠSym Key , ĊĠĠĠ Ġval Ġprotos : ĠList < Prototype >, ĊĠĠĠ Ġval Ġmeta : ĠMap < String , ĠString > Ċ ) Ġ: ĠI Def Ġby Ġkey Ċ Ċ class ĠProt otype ( val Ġargs : ĠList < Arg >, Ġval Ġtype Hint : ĠString ?) Ċ Ċ class ĠArg ( val Ġname : ĠString , Ġval Ġtype Hint : ĠString ?) ĊĊ