-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathissue.html
More file actions
199 lines (192 loc) · 7.27 KB
/
issue.html
File metadata and controls
199 lines (192 loc) · 7.27 KB
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Known Issue</title>
<link href="/style.css" rel="stylesheet" type="text/css" media="all">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<link rel="shortcut icon" href="/favicon.svg" type="image/svg+xml">
</head>
<body>
<div class="header">
<header>
<div class="menu-mobile">
<a href="index.html">Home</a>
<div id="myLinks">
<a href="feature.html">Features</a>
<a href="help.html">Documentation</a>
<a href="note.html">What's New</a>
<a href="issue.html" class="active">Known Issue</a>
</div>
<a href="javascript:void(0);" class="icon" onclick="myFunction()">
<i class="fa fa-bars"></i>
</a>
</div>
<div class="menu">
<ul class="menu-item">
<li><a href="index.html">Home</a></li>
<li><a href="feature.html">Features</a></li>
<li><a href="help.html">Documentation</a></li>
<li><a href="note.html">What's New</a></li>
<li><a class="active" href="issue.html">Known Issue</a></li>
</ul>
</div>
</header>
</div>
<div class="content">
<div class="section">
<h1>Known Issue</h1>
</div>
<section>
<h2>SequenceDiagram Core</h2>
<div class="wrapper">
<div class="col1"></div>
<div class="col2">
<h3>1. Export extra large image issue.</h3>
</div>
</div>
<div class="warning box tip-box">
<strong>Note:</strong> The SequenceDiagram plugin use `apache bakit` to transcode SVG --> JPG, PNG, TIF.
When your diagram is huge, the transcoder might fail with OutOfMemoryError.
</div>
<div class="wrapper">
<div class="col1"></div>
<div class="col2">
<p>To avoid this problem, please increase the java memory setting, or prefer SVG format for export. </p>
<p>It is recommended that you export in SVG format.</p>
<p>Since version 4.0.3, if you choose the JPG, PNG, TIF format, large images will export multiple image tiles, which may be less useful.</p>
</div>
</div>
</section>
<section>
<h2>SequenceDiagram C/C++</h2>
<div class="danger box tip-box">
<strong>Note:</strong> The SequenceDiagram C/C++ is compatible with CLion (legacy engine), but it is incompatible with CLion Nova (ReSharper C++ language engine).
</div>
<div class="wrapper">
<div class="col1"><img src="images/clion_nova.png" alt="CLion Nova"/></div>
<div class="col2">
<p>Form Clion 2024.3, Clion Nova is now the default language engine. which use `the ReSharper C++ language engine`.
The new language engine is weak of PSI which SequenceDiagram C/C++ is required. So SequenceDiagram C/C++ will
report `unsupported language: C++`.</p>
<p>To avoid this, uncheck the `Use the ReSharper C++ language engine(CLion Nova)` Option, in `Settings > Advanced Settings`,
under CLion section. </p>
<p>This will roll back to `CLion legacy engine`, which will provide a bunch of PSI to support SequenceDiagram C/C++ to work.
The drawback is you lose the advantage of CLion Nova. Your choice.</p>
</div>
</div>
</section>
<section>
<h2>SequenceDiagram Java</h2>
<div class="danger box tip-box">
<strong>Note:</strong> The SequenceDiagram plugin relies heavily on the UAST API.
Due to UAST API limitations, the following features are not supported.
</div>
<div class="wrapper">
<div class="col1"></div>
<div class="col2">
<h3>1. Scala for comprehension calls is not supported</h3>
</div>
</div>
<div class="wrapper">
<div class="col1"><img src="images/a_foo2.svg" alt="Comprehension"/></div>
<div class="col2">
<p>For example:</p>
<pre>
class B() {
def bar() = Option("bar")
}
class A(b: B) {
def foo() = {
val r = "foo" + b.bar().getOrElse("?")
r
}
def foo2() = {
val r = for {
x <- b.bar()
} yield "foo" + x
r.getOrElse("?")
}
}
</pre>
<p>the for comprehension call</p>
<pre>
val r = for {
x <- b.bar()
} yield "foo" + x
</pre>
<p>it's UAST tree is `UastEmptyexpression`</p>
<pre>
UMethod (name = foo2)
UBlockExpression
UDeclarationsExpression
ULocalVariable (name = r)
UastEmptyExpression(type = PsiType:Option<String>)
UReturnExpression
UQualifiedReferenceExpression
USimpleNameReferenceExpression (identifier = r)
UMethodCall(name = getOrElse)
UIdentifier (Identifier (getOrElse))
ULiteralExpression (value = "?")
</pre>
<p>so the `b.bar()` method call will not generate base on `UastEmptyexpression`.
Hopefully, the UAST api will solve this problem sooner.</p>
</div>
</div>
<div class="wrapper">
<div class="col1"></div>
<div class="col2">
<h3>2. Groovy method body is not supported</h3>
</div>
</div>
<div class="wrapper">
<div class="col1"><img src="images/student_greet.svg" alt="Comprehension"/></div>
<div class="col2">
<p>For example:</p>
<pre>
/**
* A Class description
*/
class Student {
/** the name of the person */
String name
/**
* Creates a greeting method for a certain person.
*
* @param otherPerson the person to greet
* @return a greeting message
*/
//known issue: groovy method will not generate in UAST
String greet(String otherPerson) {
"Hello ${otherPerson}"
// call java
Fruit fruit = new Banana()
fruit.eat()
}
}
</pre>
<p>Based on UAST api limitation, it's UAST tree is no method body mappings.</p>
<pre>
UFile (package = van.demo.grovvy)
UClass (name = Student)
UMethod (name = greet)
UParameter (name = otherPerson)
</pre>
<p>When generate sequence of method `greet`, the calls in the method body will not generate (the call java code in the body of `greet`).</p>
<pre>
"Hello ${otherPerson}"
// call java
Fruit fruit = new Banana()
fruit.eat()
</pre>
</div>
</div>
</section>
</div>
<div class="footer"> Copyright © 2016-2026 VanStudio
<!--img width="100" title="neocities.org" src="/neocities.png"-->
</div>
<script src="vs.js"></script>
</body>
</html>