<table><tr><td style="">dhaumann created this revision.<br />dhaumann added reviewers: Framework: Syntax Highlighting, cullmann.<br />Restricted Application added a project: Frameworks.<br />Restricted Application added a subscriber: Frameworks.
</td><a style="text-decoration: none; padding: 4px 8px; margin: 0 8px 8px; float: right; color: #464C5C; font-weight: bold; border-radius: 3px; background-color: #F7F7F9; background-image: linear-gradient(to bottom,#fff,#f1f0f1); display: inline-block; border: 1px solid rgba(71,87,120,.2);" href="https://phabricator.kde.org/D7915" rel="noreferrer">View Revision</a></tr></table><br /><div><strong>REVISION SUMMARY</strong><div><p>This patch extends the highlighting indexer by collecting a list of all used and all existing context names.<br />
If the used context names are NOT a subset of the existing context names, then we obviously reference an invalid non-existent context.</p>

<p>As test, I changed a rule in abc.xml to switch to context "Barbara", which does not exist. The checker now complains like this:</p>

<div class="remarkup-code-block" style="margin: 12px 0;" data-code-lang="text" data-sigil="remarkup-code-block"><pre class="remarkup-code" style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; padding: 12px; margin: 0; background: rgba(71, 87, 120, 0.08);">katehighlightingindexer(10738)/(default) {anonymous}::ContextChecker::check: "/home/dh/kde/kf5/src/frameworks/syntax-highlighting/data/syntax/abc.xml" Reference of non-existing contexts: QSet("Barbara")</pre></div>

<p>It seems all our highlighting files are consistent, which is good. So we don't directly gain anything from this patch apart from catching context errors at compile-time instead of run-time.</p>

<p>This idea can be extended: For instance, we could also check the itemData names with the referenced attributes.</p>

<p>Comments?</p></div></div><br /><div><strong>TEST PLAN</strong><div><p>make install<br />
make test</p></div></div><br /><div><strong>REPOSITORY</strong><div><div>R216 Syntax Highlighting</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D7915" rel="noreferrer">https://phabricator.kde.org/D7915</a></div></div><br /><div><strong>AFFECTED FILES</strong><div><div>src/indexer/katehighlightingindexer.cpp</div></div></div><br /><div><strong>To: </strong>dhaumann, Framework: Syntax Highlighting, cullmann<br /><strong>Cc: </strong>Frameworks<br /></div>