AS3 docs not correctly displayed under p-code when metadata present

This commit is contained in:
Jindra Petřík
2021-01-25 20:55:02 +01:00
parent 89a1ffb6f9
commit 9fce4716f9
4 changed files with 21 additions and 9 deletions

View File

@@ -20,6 +20,7 @@ All notable changes to this project will be documented in this file.
- Graph dialog proper window size
- Graph dialog scroll speed increased
- AS3: return in finally
- AS3 docs not correctly displayed under p-code when metadata present
### Changed
- AS3 test methods separated to classes

View File

@@ -12,7 +12,8 @@
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library.
* License along with this library.
*/
package com.jpexs.decompiler.flash.docs;
import com.jpexs.decompiler.flash.ApplicationInfo;
@@ -77,6 +78,9 @@ public class As3PCodeOtherDocs extends AbstractDocs {
if (curPath.startsWith("trait.method")) {
curPath = path.substring("trait.".length());
}
if (curPath.startsWith("method.body.trait.")) {
curPath = path.substring("method.body.".length());
}
if (prop.containsKey(curPath)) {
String docStr = prop.getString(curPath);
sb.append("<div class=\"path-block\">");

View File

@@ -63,6 +63,9 @@ trait.dispid = Dispatch id
#slot/const/class/function
trait.slotid = Slot id
trait.type = Type of trait
trait.value = Default value for a trait
method = Method
method.name = Name of the method
method.flag = Method flag
@@ -90,3 +93,4 @@ method.body.try.target = Position to which control should jump if exception of t
method.body.try.type = Type of catched exception
method.body.try.name = Name of the exception object
method.body.code = Code of the method body
method.body.trait = Trait of the method body

View File

@@ -464,7 +464,9 @@ public class ASMSourceEditorPane extends DebuggableEditorPane implements CaretLi
ParsedSymbol.TYPE_KEYWORD_MAXSCOPEDEPTH,
ParsedSymbol.TYPE_KEYWORD_TRY,
ParsedSymbol.TYPE_KEYWORD_DISPID,
ParsedSymbol.TYPE_KEYWORD_SLOTID,};
ParsedSymbol.TYPE_KEYWORD_SLOTID,
ParsedSymbol.TYPE_KEYWORD_TYPE,
ParsedSymbol.TYPE_KEYWORD_VALUE,};
final Integer parameters[] = new Integer[]{
ParsedSymbol.TYPE_KEYWORD_FROM,
ParsedSymbol.TYPE_KEYWORD_TO,
@@ -507,6 +509,14 @@ public class ASMSourceEditorPane extends DebuggableEditorPane implements CaretLi
lastLevel = levels.peek();
}
if (line != lastLine && !levels.isEmpty()) {
while (types.peek() == TYPE_LINE_BLOCK || types.peek() == TYPE_PARAMETER) {
levels.pop();
types.pop();
lines.pop();
}
}
int type = TYPE_IGNORED;
if (symb.type == ParsedSymbol.TYPE_KEYWORD_METHOD && "trait".equals(lastLevel)) {
type = TYPE_PARAMETER;
@@ -536,13 +546,6 @@ public class ASMSourceEditorPane extends DebuggableEditorPane implements CaretLi
aboutToBreak = true;
}
if (line != lastLine && !levels.isEmpty()) {
while (types.peek() == TYPE_LINE_BLOCK || types.peek() == TYPE_PARAMETER) {
levels.pop();
types.pop();
lines.pop();
}
}
if (type != TYPE_IGNORED) {
if (!levels.isEmpty()) {