/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 1 9 Ġ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 . script ing . compiler . plugin . impl Ċ Ċ import Ġorg . jetbrains . kotlin . builtins . Kotlin Built Ins Ċ import Ġorg . jetbrains . kotlin . cli . jvm . compiler . Kotlin Core Environment Ċ import Ġorg . jetbrains . kotlin . cli . jvm . compiler . No Scope Record Cli Binding Trace Ċ import Ġorg . jetbrains . kotlin . config . language Version Settings Ċ import Ġorg . jetbrains . kotlin . context . Context For New Module Ċ import Ġorg . jetbrains . kotlin . context . Project Context Ċ import Ġorg . jetbrains . kotlin . descriptors . Class Descriptor With Resolution Scopes Ċ import Ġorg . jetbrains . kotlin . descriptors . Module Descriptor Ċ import Ġorg . jetbrains . kotlin . descriptors . Package Fragment Provider Ċ import Ġorg . jetbrains . kotlin . descriptors . impl . Module Descriptor Impl Ċ import Ġorg . jetbrains . kotlin . diagnostics . Severity Ċ import Ġorg . jetbrains . kotlin . frontend . js . di . create Top Down Analyzer For Js Ċ import Ġorg . jetbrains . kotlin . incremental . components . Expect Actual Tracker Ċ import Ġorg . jetbrains . kotlin . incremental . components . Lookup Tracker Ċ import Ġorg . jetbrains . kotlin . name . Name Ċ import Ġorg . jetbrains . kotlin . psi . Kt File Ċ import Ġorg . jetbrains . kotlin . resolve . Binding Context Ċ import Ġorg . jetbrains . kotlin . resolve . Binding Trace Context Ċ import Ġorg . jetbrains . kotlin . resolve . Compiler Environment Ċ import Ġorg . jetbrains . kotlin . resolve . Top Down Analysis Mode Ċ import Ġorg . jetbrains . kotlin . resolve . lazy . declarations . File Based Declaration Provider Factory Ċ Ċ abstract Ġclass ĠAbstract Js Script like Code Analy ser ( ĊĠĠĠ Ġprivate Ġval Ġenvironment : ĠKotlin Core Environment , ĊĠĠĠ Ġprivate Ġval Ġdependencies : ĠList < Module Descriptor > Ċ ) Ġ{ ĊĊĠĠĠ Ġprotected Ġclass ĠJs Script Analysis Result ( ĊĠĠĠĠĠĠĠ Ġval Ġmodule Descriptor : ĠModule Descriptor , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġscript Descriptor : ĠClass Descriptor With Resolution Scopes ?, ĊĠĠĠĠĠĠĠ Ġval Ġbinding Context : ĠBinding Context ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġis Success : ĠBoolean Ġget () Ġ= Ġscript Descriptor Ġ!= Ġnull ĊĠĠĠĠĠĠĠ Ġval Ġscript : ĠClass Descriptor With Resolution Scopes Ġget () Ġ= Ġscript Descriptor Ġ?: Ġerror (" Error Ġoccurred ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġanalysis Impl ( psi : ĠK t File ): ĠJs Script Analysis Result Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtrace : ĠBinding Trace Context Ġ= ĠNo Scope Record Cli Binding Trace () ĊĠĠĠĠĠĠĠ Ġval Ġproject Ġ= Ġenvironment . project ĊĠĠĠĠĠĠĠ Ġval Ġbuilt Ins : ĠKotlin Built Ins Ġ= Ġdependencies . single Ġ{ Ġit . all Dependency Modules . isEmpty () Ġ}. built Ins ĊĠĠĠĠĠĠĠ Ġval Ġmodule Context Ġ= ĠContext For New Module ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠProject Context ( project , Ġ" Top Down Analyzer Ġfor ĠJS ĠScript "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠName . special ("< script > "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilt Ins , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplatform Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġlanguage Version Settings Ġ= Ġenvironment . configuration . language Version Settings ĊĠĠĠĠĠĠĠ Ġval Ġlookup Tracker Ġ= ĠLookup Tracker . DO _ NOTH ING ĊĠĠĠĠĠĠĠ Ġval Ġexpect Actual Tracker Ġ= ĠExpect Actual Tracker . Do Nothing ĊĠĠĠĠĠĠĠ Ġval Ġadditional Packages Ġ= Ġempty List < Package Fragment Provider >() ĊĠĠĠĠĠĠĠ Ġval Ġmodule Descriptor Ġ= Ġmodule Context . module ĊĊĠĠĠĠĠĠĠ Ġmodule Descriptor . set Dependencies ( dependencies . map Ġ{ Ġit Ġas ĠModule Descriptor Impl Ġ} Ġ+ Ġmodule Descriptor ) ĊĊĠĠĠĠĠĠĠ Ġval Ġanalyzer Ġ= Ġcreate Top Down Analyzer For Js ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodule Context , Ġtrace , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFile Based Declaration Provider Factory ( module Context . storage Manager , ĠlistOf ( psi )), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlanguage Version Settings , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlookup Tracker , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpect Actual Tracker , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadditional Packages , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCompiler Environment , ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġanalyzer Context Ġ= Ġanalyzer . analyze Declarations ( Top Down Analysis Mode . TopLevel Declarations , ĠlistOf ( psi )) ĊĊĠĠĠĠĠĠĠ Ġval Ġdiagnostics Ġ= Ġtrace . binding Context . diagnostics ĊĠĠĠĠĠĠĠ Ġval Ġhas Errors Ġ= Ġdiagnostics . any Ġ{ Ġit . severity Ġ== ĠSeverity . ERROR Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġscript Descriptor Ġ= Ġanalyzer Context . scripts [ psi . script ] ĊĊĠĠĠĠĠĠĠ Ġassert ( script Descriptor Ġ!= Ġnull Ġ|| Ġhas Errors ) Ġ{ Ġ" If Ġno Ġerrors Ġoccurred Ġscript Ġdescriptor Ġhas Ġto Ġbe Ġexisted " Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠJs Script Analysis Result ( module Descriptor , Ġscript Descriptor , Ġtrace . binding Context ) ĊĠĠĠ Ġ} Ċ }