summaryrefslogtreecommitdiff
path: root/plugins/kotlin/docs/fir-ide/architecture/images/general-architecture.svg
blob: 507e2710b37688201a9d88b0372a336aa1da1e90 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="444px" preserveAspectRatio="none" style="width:1094px;height:444px;background:#FFFFFF;" version="1.1" viewBox="0 0 1094 444" width="1094px" zoomAndPan="magnify"><defs><filter height="300%" id="fnb791yaosw4g" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><!--MD5=[6ad7c0b688d9e902153dd4de2b6da276]
cluster plugin--><polygon fill="#FFFFFF" filter="url(#fnb791yaosw4g)" points="220,6,329,6,336,28.4883,1077,28.4883,1077,119,220,119,220,6" style="stroke:#000000;stroke-width:1.5;"/><line style="stroke:#000000;stroke-width:1.5;" x1="220" x2="336" y1="28.4883" y2="28.4883"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="103" x="224" y="21.5352">FIR IDE Plugin</text><!--MD5=[d145114503433d0fb74396bd53dbd25c]
entity Other subsystems--><rect fill="#FEFECE" filter="url(#fnb791yaosw4g)" height="46.4883" style="stroke:#A80036;stroke-width:1.5;" width="162" x="891" y="49"/><rect fill="#FEFECE" height="10" style="stroke:#A80036;stroke-width:1.5;" width="15" x="1033" y="54"/><rect fill="#FEFECE" height="2" style="stroke:#A80036;stroke-width:1.5;" width="4" x="1031" y="56"/><rect fill="#FEFECE" height="2" style="stroke:#A80036;stroke-width:1.5;" width="4" x="1031" y="60"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="122" x="906" y="82.5352">Other subsystems</text><!--MD5=[edf9ae99e6703459d2d20b59cd1d1c0d]
entity Highlighting--><rect fill="#FEFECE" filter="url(#fnb791yaosw4g)" height="46.4883" style="stroke:#A80036;stroke-width:1.5;" width="125" x="730.5" y="49"/><rect fill="#FEFECE" height="10" style="stroke:#A80036;stroke-width:1.5;" width="15" x="835.5" y="54"/><rect fill="#FEFECE" height="2" style="stroke:#A80036;stroke-width:1.5;" width="4" x="833.5" y="56"/><rect fill="#FEFECE" height="2" style="stroke:#A80036;stroke-width:1.5;" width="4" x="833.5" y="60"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="85" x="745.5" y="82.5352">Highlighting</text><!--MD5=[b3da2733087c08e258610b598fdd6789]
entity Completion--><rect fill="#FEFECE" filter="url(#fnb791yaosw4g)" height="46.4883" style="stroke:#A80036;stroke-width:1.5;" width="120" x="575" y="49"/><rect fill="#FEFECE" height="10" style="stroke:#A80036;stroke-width:1.5;" width="15" x="675" y="54"/><rect fill="#FEFECE" height="2" style="stroke:#A80036;stroke-width:1.5;" width="4" x="673" y="56"/><rect fill="#FEFECE" height="2" style="stroke:#A80036;stroke-width:1.5;" width="4" x="673" y="60"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="80" x="590" y="82.5352">Completion</text><!--MD5=[1d085ddff522cc5769a2492b7fc9c7ab]
entity Find Usages--><rect fill="#FEFECE" filter="url(#fnb791yaosw4g)" height="46.4883" style="stroke:#A80036;stroke-width:1.5;" width="123" x="416.5" y="49"/><rect fill="#FEFECE" height="10" style="stroke:#A80036;stroke-width:1.5;" width="15" x="519.5" y="54"/><rect fill="#FEFECE" height="2" style="stroke:#A80036;stroke-width:1.5;" width="4" x="517.5" y="56"/><rect fill="#FEFECE" height="2" style="stroke:#A80036;stroke-width:1.5;" width="4" x="517.5" y="60"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="83" x="431.5" y="82.5352">Find Usages</text><!--MD5=[d04a9a2bee163f2ba04888c3d8e4c6ed]
entity Inspections--><rect fill="#FEFECE" filter="url(#fnb791yaosw4g)" height="46.4883" style="stroke:#A80036;stroke-width:1.5;" width="118" x="263" y="49"/><rect fill="#FEFECE" height="10" style="stroke:#A80036;stroke-width:1.5;" width="15" x="361" y="54"/><rect fill="#FEFECE" height="2" style="stroke:#A80036;stroke-width:1.5;" width="4" x="359" y="56"/><rect fill="#FEFECE" height="2" style="stroke:#A80036;stroke-width:1.5;" width="4" x="359" y="60"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="78" x="278" y="82.5352">Inspections</text><!--MD5=[4e3a09270b53cd499ac6247cc36ef03d]
entity fir--><rect fill="#FEFECE" filter="url(#fnb791yaosw4g)" height="51.1992" style="stroke:#A80036;stroke-width:1.5;" width="158" x="556" y="379.5"/><rect fill="#FEFECE" height="10" style="stroke:#A80036;stroke-width:1.5;" width="15" x="694" y="384.5"/><rect fill="#FEFECE" height="2" style="stroke:#A80036;stroke-width:1.5;" width="4" x="692" y="386.5"/><rect fill="#FEFECE" height="2" style="stroke:#A80036;stroke-width:1.5;" width="4" x="692" y="390.5"/><text fill="#000000" font-family="sans-serif" font-size="18" font-weight="bold" lengthAdjust="spacing" textLength="118" x="571" y="416.9023">FIR Compiler</text><!--MD5=[e5e4aff23692c45099a835661ee4ea5b]
entity ll--><rect fill="#FEFECE" filter="url(#fnb791yaosw4g)" height="51.1992" style="stroke:#A80036;stroke-width:1.5;" width="173" x="548.5" y="268.5"/><rect fill="#FEFECE" height="10" style="stroke:#A80036;stroke-width:1.5;" width="15" x="701.5" y="273.5"/><rect fill="#FEFECE" height="2" style="stroke:#A80036;stroke-width:1.5;" width="4" x="699.5" y="275.5"/><rect fill="#FEFECE" height="2" style="stroke:#A80036;stroke-width:1.5;" width="4" x="699.5" y="279.5"/><text fill="#000000" font-family="sans-serif" font-size="18" font-weight="bold" lengthAdjust="spacing" textLength="133" x="563.5" y="305.9023">Low-Level API</text><!--MD5=[bc98c22ec29a4ee6d970209b2caf4b56]
entity analysis--><rect fill="#FEFECE" filter="url(#fnb791yaosw4g)" height="51.1992" style="stroke:#A80036;stroke-width:1.5;" width="154" x="558" y="157.5"/><rect fill="#FEFECE" height="10" style="stroke:#A80036;stroke-width:1.5;" width="15" x="692" y="162.5"/><rect fill="#FEFECE" height="2" style="stroke:#A80036;stroke-width:1.5;" width="4" x="690" y="164.5"/><rect fill="#FEFECE" height="2" style="stroke:#A80036;stroke-width:1.5;" width="4" x="690" y="168.5"/><text fill="#000000" font-family="sans-serif" font-size="18" font-weight="bold" lengthAdjust="spacing" textLength="114" x="573" y="194.9023">Analysis API</text><!--MD5=[30b2d8e6f553287acf1703da3e93c610]
entity ij--><rect fill="#FEFECE" filter="url(#fnb791yaosw4g)" height="51.1992" style="stroke:#A80036;stroke-width:1.5;" width="186" x="7" y="46.5"/><rect fill="#FEFECE" height="10" style="stroke:#A80036;stroke-width:1.5;" width="15" x="173" y="51.5"/><rect fill="#FEFECE" height="2" style="stroke:#A80036;stroke-width:1.5;" width="4" x="171" y="53.5"/><rect fill="#FEFECE" height="2" style="stroke:#A80036;stroke-width:1.5;" width="4" x="171" y="57.5"/><text fill="#000000" font-family="sans-serif" font-size="18" font-weight="bold" lengthAdjust="spacing" textLength="146" x="22" y="83.9023">IntelliJ Platform</text><!--MD5=[47ad573ba6a053d9e1e44c8699adcd6f]
link Highlighting to analysis--><path d="M766.19,95.04 C750.93,107.27 731.26,122.48 713,135 C703.3,141.65 692.65,148.4 682.43,154.63 " fill="none" id="Highlighting-to-analysis" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="678.08,157.27,687.8494,156.0217,682.3548,154.6766,683.7,149.182,678.08,157.27" style="stroke:#A80036;stroke-width:1.0;"/><!--MD5=[55a83d7621c017c8bd183dea3518c40f]
link Completion to analysis--><path d="M635,95.06 C635,111.41 635,133.88 635,151.88 " fill="none" id="Completion-to-analysis" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="635,157.31,639,148.31,635,152.31,631,148.31,635,157.31" style="stroke:#A80036;stroke-width:1.0;"/><!--MD5=[54959ee5a3b15b5107ac6a1d8f07e6bb]
link Find Usages to analysis--><path d="M504.84,95 C520.11,107.22 539.77,122.43 558,135 C567.7,141.69 578.35,148.51 588.56,154.8 " fill="none" id="Find Usages-to-analysis" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="592.9,157.46,587.3239,149.3417,588.6393,154.8435,583.1375,156.1589,592.9,157.46" style="stroke:#A80036;stroke-width:1.0;"/><!--MD5=[35c745b18bef14dbde27458fb16fae59]
link Inspections to analysis--><path d="M343.6,95.19 C358.04,108.73 378.17,125.26 399,135 C447.29,157.57 506.08,169.32 552.89,175.43 " fill="none" id="Inspections-to-analysis" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="557.96,176.07,549.5328,170.9727,552.9995,175.4428,548.5293,178.9095,557.96,176.07" style="stroke:#A80036;stroke-width:1.0;"/><!--MD5=[9a14564dae5e4ae3868d081a665885a3]
link Other subsystems to analysis--><path d="M943.19,95 C924.2,108.47 898.26,124.99 873,135 C823.13,154.76 763.98,166.49 717.12,173.29 " fill="none" id="Other subsystems-to-analysis" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="712.04,174.02,721.512,176.7185,716.9906,173.3189,720.3902,168.7975,712.04,174.02" style="stroke:#A80036;stroke-width:1.0;"/><!--MD5=[e1aab097e4838331ceb953c8626609b7]
reverse link ij to plugin--><path d="M198.54,72 C203.36,72 208.18,72 213,72 C214.205,72 215.41,72 216.615,72 C217.2175,72 217.82,72 218.4225,72 C218.7238,72 219.025,72 219.3263,72 C219.4769,72 219.6275,72 219.7781,72 C219.8158,72 219.8534,72 219.8911,72 " fill="none" id="ij-backto-plugin" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="193.5,72,202.5,76,198.5,72,202.5,68,193.5,72" style="stroke:#A80036;stroke-width:1.0;"/><!--MD5=[1d8267d94116d3ab6b94e1c2c89a1056]
link analysis to ll--><path d="M635,208.73 C635,224.9 635,246.11 635,263.2 " fill="none" id="analysis-to-ll" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="635,268.36,639,259.36,635,263.36,631,259.36,635,268.36" style="stroke:#A80036;stroke-width:1.0;"/><!--MD5=[05fd97e95d1bbf6ed9865676fe40841d]
link ll to fir--><path d="M635,319.73 C635,335.9 635,357.11 635,374.2 " fill="none" id="ll-to-fir" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="635,379.36,639,370.36,635,374.36,631,370.36,635,379.36" style="stroke:#A80036;stroke-width:1.0;"/><!--MD5=[477fb20a911b210f6b9d7d6c69a638cd]
@startuml

component fir[
= FIR Compiler
]

component ll [
= Low-Level API
]

component analysis [
= Analysis API
]


component ij [
= IntelliJ Platform
]

package "FIR IDE Plugin" as plugin {
    [Other subsystems]
    [Highlighting]
    [Completion]
    [Find Usages]
    [Inspections]
}


[Highlighting] - -> [analysis]
[Completion]   - -> [analysis]
[Find Usages]  - -> [analysis]
[Inspections]  - -> [analysis]
[Other subsystems] - -> [analysis]
plugin -l-> [ij]

[analysis] - -> [ll]
[ll] - -> [fir]

@enduml

PlantUML version 1.2021.16(Wed Dec 08 18:25:22 CET 2021)
--></g></svg>