From cfb2e782a13517b217eb12567e94671a445c9759 Mon Sep 17 00:00:00 2001 From: Michael Schmidt Date: Tue, 5 Oct 2021 21:26:28 +0200 Subject: [PATCH] JavaStackTrace: Added missing lookbehinds (#3116) --- components/prism-javastacktrace.js | 17 ++++++++++------- components/prism-javastacktrace.min.js | 2 +- .../_java_stack_trace_inclusion.test | 6 +++--- .../_minecraft_javastacktrace_inclusion.test | 12 ++++++------ 4 files changed, 20 insertions(+), 17 deletions(-) diff --git a/components/prism-javastacktrace.js b/components/prism-javastacktrace.js index 1c09650999..fd4f223c50 100644 --- a/components/prism-javastacktrace.js +++ b/components/prism-javastacktrace.js @@ -9,10 +9,11 @@ Prism.languages.javastacktrace = { // Caused by: MidLevelException: LowLevelException // Suppressed: Resource$CloseFailException: Resource ID = 0 'summary': { - pattern: /^[\t ]*(?:(?:Caused by:|Suppressed:|Exception in thread "[^"]*")[\t ]+)?[\w$.]+(?::.*)?$/m, + pattern: /^([\t ]*)(?:(?:Caused by:|Suppressed:|Exception in thread "[^"]*")[\t ]+)?[\w$.]+(?::.*)?$/m, + lookbehind: true, inside: { 'keyword': { - pattern: /^(\s*)(?:(?:Caused by|Suppressed)(?=:)|Exception in thread)/m, + pattern: /^([\t ]*)(?:(?:Caused by|Suppressed)(?=:)|Exception in thread)/m, lookbehind: true }, @@ -26,7 +27,7 @@ Prism.languages.javastacktrace = { lookbehind: true, inside: { 'class-name': /[\w$]+(?=$|:)/, - 'namespace': /[a-z]\w*/, + 'namespace': /\b[a-z]\w*\b/, 'punctuation': /[.:]/ } }, @@ -61,7 +62,8 @@ Prism.languages.javastacktrace = { // https://github.com/matcdac/jdk/blob/2305df71d1b7710266ae0956d73927a225132c0f/src/java.base/share/classes/java/lang/module/ModuleDescriptor.java#L1108 // However, to keep this simple, a version will be matched by the pattern /@[\w$.+-]*/. 'stack-frame': { - pattern: /^[\t ]*at (?:[\w$./]|@[\w$.+-]*\/)+(?:)?\([^()]*\)/m, + pattern: /^([\t ]*)at (?:[\w$./]|@[\w$.+-]*\/)+(?:)?\([^()]*\)/m, + lookbehind: true, inside: { 'keyword': { pattern: /^(\s*)at(?= )/, @@ -77,7 +79,7 @@ Prism.languages.javastacktrace = { 'file': /^\w+\.\w+/, 'punctuation': /:/, 'line-number': { - pattern: /\d+/, + pattern: /\b\d+\b/, alias: 'number' } } @@ -116,7 +118,7 @@ Prism.languages.javastacktrace = { } }, 'namespace': { - pattern: /(?:[a-z]\w*\.)+/, + pattern: /(?:\b[a-z]\w*\.)+/, inside: { 'punctuation': /\./ } @@ -128,7 +130,8 @@ Prism.languages.javastacktrace = { // ... 32 more // ... 32 common frames omitted 'more': { - pattern: /^[\t ]*\.{3} \d+ [a-z]+(?: [a-z]+)*/m, + pattern: /^([\t ]*)\.{3} \d+ [a-z]+(?: [a-z]+)*/m, + lookbehind: true, inside: { 'punctuation': /\.{3}/, 'number': /\d+/, diff --git a/components/prism-javastacktrace.min.js b/components/prism-javastacktrace.min.js index a61d466448..8a40730df5 100644 --- a/components/prism-javastacktrace.min.js +++ b/components/prism-javastacktrace.min.js @@ -1 +1 @@ -Prism.languages.javastacktrace={summary:{pattern:/^[\t ]*(?:(?:Caused by:|Suppressed:|Exception in thread "[^"]*")[\t ]+)?[\w$.]+(?::.*)?$/m,inside:{keyword:{pattern:/^(\s*)(?:(?:Caused by|Suppressed)(?=:)|Exception in thread)/m,lookbehind:!0},string:{pattern:/^(\s*)"[^"]*"/,lookbehind:!0},exceptions:{pattern:/^(:?\s*)[\w$.]+(?=:|$)/,lookbehind:!0,inside:{"class-name":/[\w$]+(?=$|:)/,namespace:/[a-z]\w*/,punctuation:/[.:]/}},message:{pattern:/(:\s*)\S.*/,lookbehind:!0,alias:"string"},punctuation:/:/}},"stack-frame":{pattern:/^[\t ]*at (?:[\w$./]|@[\w$.+-]*\/)+(?:)?\([^()]*\)/m,inside:{keyword:{pattern:/^(\s*)at(?= )/,lookbehind:!0},source:[{pattern:/(\()\w+\.\w+:\d+(?=\))/,lookbehind:!0,inside:{file:/^\w+\.\w+/,punctuation:/:/,"line-number":{pattern:/\d+/,alias:"number"}}},{pattern:/(\()[^()]*(?=\))/,lookbehind:!0,inside:{keyword:/^(?:Native Method|Unknown Source)$/}}],"class-name":/[\w$]+(?=\.(?:|[\w$]+)\()/,function:/(?:|[\w$]+)(?=\()/,"class-loader":{pattern:/(\s)[a-z]\w*(?:\.[a-z]\w*)*(?=\/[\w@$.]*\/)/,lookbehind:!0,alias:"namespace",inside:{punctuation:/\./}},module:{pattern:/([\s/])[a-z]\w*(?:\.[a-z]\w*)*(?:@[\w$.+-]*)?(?=\/)/,lookbehind:!0,inside:{version:{pattern:/(@)[\s\S]+/,lookbehind:!0,alias:"number"},punctuation:/[@.]/}},namespace:{pattern:/(?:[a-z]\w*\.)+/,inside:{punctuation:/\./}},punctuation:/[()/.]/}},more:{pattern:/^[\t ]*\.{3} \d+ [a-z]+(?: [a-z]+)*/m,inside:{punctuation:/\.{3}/,number:/\d+/,keyword:/\b[a-z]+(?: [a-z]+)*\b/}}}; \ No newline at end of file +Prism.languages.javastacktrace={summary:{pattern:/^([\t ]*)(?:(?:Caused by:|Suppressed:|Exception in thread "[^"]*")[\t ]+)?[\w$.]+(?::.*)?$/m,lookbehind:!0,inside:{keyword:{pattern:/^([\t ]*)(?:(?:Caused by|Suppressed)(?=:)|Exception in thread)/m,lookbehind:!0},string:{pattern:/^(\s*)"[^"]*"/,lookbehind:!0},exceptions:{pattern:/^(:?\s*)[\w$.]+(?=:|$)/,lookbehind:!0,inside:{"class-name":/[\w$]+(?=$|:)/,namespace:/\b[a-z]\w*\b/,punctuation:/[.:]/}},message:{pattern:/(:\s*)\S.*/,lookbehind:!0,alias:"string"},punctuation:/:/}},"stack-frame":{pattern:/^([\t ]*)at (?:[\w$./]|@[\w$.+-]*\/)+(?:)?\([^()]*\)/m,lookbehind:!0,inside:{keyword:{pattern:/^(\s*)at(?= )/,lookbehind:!0},source:[{pattern:/(\()\w+\.\w+:\d+(?=\))/,lookbehind:!0,inside:{file:/^\w+\.\w+/,punctuation:/:/,"line-number":{pattern:/\b\d+\b/,alias:"number"}}},{pattern:/(\()[^()]*(?=\))/,lookbehind:!0,inside:{keyword:/^(?:Native Method|Unknown Source)$/}}],"class-name":/[\w$]+(?=\.(?:|[\w$]+)\()/,function:/(?:|[\w$]+)(?=\()/,"class-loader":{pattern:/(\s)[a-z]\w*(?:\.[a-z]\w*)*(?=\/[\w@$.]*\/)/,lookbehind:!0,alias:"namespace",inside:{punctuation:/\./}},module:{pattern:/([\s/])[a-z]\w*(?:\.[a-z]\w*)*(?:@[\w$.+-]*)?(?=\/)/,lookbehind:!0,inside:{version:{pattern:/(@)[\s\S]+/,lookbehind:!0,alias:"number"},punctuation:/[@.]/}},namespace:{pattern:/(?:\b[a-z]\w*\.)+/,inside:{punctuation:/\./}},punctuation:/[()/.]/}},more:{pattern:/^([\t ]*)\.{3} \d+ [a-z]+(?: [a-z]+)*/m,lookbehind:!0,inside:{punctuation:/\.{3}/,number:/\d+/,keyword:/\b[a-z]+(?: [a-z]+)*\b/}}}; \ No newline at end of file diff --git a/tests/languages/log!+javastacktrace/_java_stack_trace_inclusion.test b/tests/languages/log!+javastacktrace/_java_stack_trace_inclusion.test index 361c9efe98..db9acad878 100644 --- a/tests/languages/log!+javastacktrace/_java_stack_trace_inclusion.test +++ b/tests/languages/log!+javastacktrace/_java_stack_trace_inclusion.test @@ -77,7 +77,7 @@ Caused by: org.apache.maven.wagon.TransferFailedException: Failed to transfer fi ]], ["punctuation", ")"] ]], - " ~[na:1.8.0_171]\r\n", + " ~[na:1.8.0_171]\r\n\t", ["stack-frame", [ ["keyword", "at"], @@ -100,7 +100,7 @@ Caused by: org.apache.maven.wagon.TransferFailedException: Failed to transfer fi ]], ["punctuation", ")"] ]], - " ~[na:1.8.0_171]\r\n", + " ~[na:1.8.0_171]\r\n\t", ["stack-frame", [ ["keyword", "at"], @@ -123,7 +123,7 @@ Caused by: org.apache.maven.wagon.TransferFailedException: Failed to transfer fi ]], ["punctuation", ")"] ]], - " ~[na:1.8.0_171]\r\n", + " ~[na:1.8.0_171]\r\n\t", ["stack-frame", [ ["keyword", "at"], diff --git a/tests/languages/log!+javastacktrace/_minecraft_javastacktrace_inclusion.test b/tests/languages/log!+javastacktrace/_minecraft_javastacktrace_inclusion.test index 52d67c66cf..43f3ac30f7 100644 --- a/tests/languages/log!+javastacktrace/_minecraft_javastacktrace_inclusion.test +++ b/tests/languages/log!+javastacktrace/_minecraft_javastacktrace_inclusion.test @@ -259,7 +259,7 @@ net.minecraftforge.fml.common.MissingModsException: Mod thaumcraft (Thaumcraft) ]], ["punctuation", ")"] ]], - " ~[Loader.class:?]\r\n", + " ~[Loader.class:?]\r\n\t", ["stack-frame", [ ["keyword", "at"], @@ -284,7 +284,7 @@ net.minecraftforge.fml.common.MissingModsException: Mod thaumcraft (Thaumcraft) ]], ["punctuation", ")"] ]], - " ~[Loader.class:?]\r\n", + " ~[Loader.class:?]\r\n\t", ["stack-frame", [ ["keyword", "at"], @@ -309,7 +309,7 @@ net.minecraftforge.fml.common.MissingModsException: Mod thaumcraft (Thaumcraft) ]], ["punctuation", ")"] ]], - " ~[FMLServerHandler.class:?]\r\n", + " ~[FMLServerHandler.class:?]\r\n\t", ["stack-frame", [ ["keyword", "at"], @@ -334,7 +334,7 @@ net.minecraftforge.fml.common.MissingModsException: Mod thaumcraft (Thaumcraft) ]], ["punctuation", ")"] ]], - " ~[FMLCommonHandler.class:?]\r\n", + " ~[FMLCommonHandler.class:?]\r\n\t", ["stack-frame", [ ["keyword", "at"], @@ -359,7 +359,7 @@ net.minecraftforge.fml.common.MissingModsException: Mod thaumcraft (Thaumcraft) ]], ["punctuation", ")"] ]], - " ~[nz.class:?]\r\n", + " ~[nz.class:?]\r\n\t", ["stack-frame", [ ["keyword", "at"], @@ -382,7 +382,7 @@ net.minecraftforge.fml.common.MissingModsException: Mod thaumcraft (Thaumcraft) ]], ["punctuation", ")"] ]], - " [MinecraftServer.class:?]\r\n", + " [MinecraftServer.class:?]\r\n\t", ["stack-frame", [ ["keyword", "at"],