Upstream commit message: ----------------------------------------------------------- commit 5f3f392a3b8fc6dc334d6f688b9a57e06827579b Author: Guy Maurel <guy.j@maurel.de> Date: Sat Jan 2 18:59:46 2021 +0100 insert closing brace before the preprocessor line M src/braces.cpp A tests/config/Issue_3040.cfg M tests/cpp.test A tests/expected/cpp/34326-Issue_3040.cpp A tests/input/cpp/Issue_3040.cpp commit fb66774e46b1b0f93b548ed172126619fcbd6723 Author: Guy Maurel <guy.j@maurel.de> Date: Sun Jan 3 18:08:13 2021 +0100 insert after #endif M src/braces.cpp M tests/expected/cpp/34326-Issue_3040.cpp M tests/input/cpp/Issue_3040.cpp ----------------------------------------------------------- Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it>pull/3/head
parent
eaaea17529
commit
bad411472a
@ -0,0 +1,183 @@
|
|||||||
|
Backported commits 5f3f392a and fb66774e from upstream. This solves upstream issues 3040.
|
||||||
|
|
||||||
|
--- a/src/braces.cpp
|
||||||
|
+++ b/src/braces.cpp
|
||||||
|
@@ -1290,7 +1290,7 @@
|
||||||
|
static chunk_t *mod_case_brace_add(chunk_t *cl_colon)
|
||||||
|
{
|
||||||
|
LOG_FUNC_ENTRY();
|
||||||
|
- LOG_FMT(LMCB, "%s(%d): line %zu",
|
||||||
|
+ LOG_FMT(LMCB, "%s(%d): line %zu\n",
|
||||||
|
__func__, __LINE__, cl_colon->orig_line);
|
||||||
|
|
||||||
|
chunk_t *pc = cl_colon;
|
||||||
|
@@ -1309,7 +1309,28 @@
|
||||||
|
&& ( chunk_is_token(pc, CT_CASE)
|
||||||
|
|| chunk_is_token(pc, CT_BREAK)))
|
||||||
|
{
|
||||||
|
- last = pc;
|
||||||
|
+ // check if previous line is a preprocessor Issue #3040
|
||||||
|
+ chunk_t *prev = chunk_get_prev_ncnl(pc);
|
||||||
|
+ LOG_FMT(LMCB, "%s(%d): prev->text() is '%s', orig_line %zu\n",
|
||||||
|
+ __func__, __LINE__, prev->text(), prev->orig_line);
|
||||||
|
+
|
||||||
|
+ if ( chunk_is_preproc(prev)
|
||||||
|
+ && chunk_is_not_token(prev, CT_PP_ENDIF))
|
||||||
|
+ {
|
||||||
|
+ // previous line is a preprocessor, but NOT #endif
|
||||||
|
+ while (chunk_is_preproc(prev))
|
||||||
|
+ {
|
||||||
|
+ prev = chunk_get_prev_ncnl(prev);
|
||||||
|
+ }
|
||||||
|
+ chunk_t *next_prev = chunk_get_next_ncnl(prev);
|
||||||
|
+ LOG_FMT(LMCB, "%s(%d): next_prev->text() is '%s', orig_line %zu\n",
|
||||||
|
+ __func__, __LINE__, next_prev->text(), next_prev->orig_line);
|
||||||
|
+ last = next_prev;
|
||||||
|
+ }
|
||||||
|
+ else
|
||||||
|
+ {
|
||||||
|
+ last = pc;
|
||||||
|
+ }
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/tests/config/Issue_3040.cfg
|
||||||
|
@@ -0,0 +1,7 @@
|
||||||
|
+indent_columns = 2
|
||||||
|
+indent_switch_case = 2
|
||||||
|
+nl_before_case = true
|
||||||
|
+nl_after_case = true
|
||||||
|
+eat_blanks_before_close_brace = true
|
||||||
|
+mod_move_case_break = true
|
||||||
|
+mod_case_brace = force
|
||||||
|
--- a/tests/cpp.test
|
||||||
|
+++ b/tests/cpp.test
|
||||||
|
@@ -827,6 +827,7 @@
|
||||||
|
34322 issue_2623_1.cfg cpp/issue_2623.cpp
|
||||||
|
34323 issue_2623_2.cfg cpp/issue_2623.cpp
|
||||||
|
34324 issue_2623_3.cfg cpp/issue_2623.cpp
|
||||||
|
+34326 Issue_3040.cfg cpp/Issue_3040.cpp
|
||||||
|
|
||||||
|
# Adopt some UT tests
|
||||||
|
10000 empty.cfg cpp/621_this-spacing.cpp
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/tests/expected/cpp/34326-Issue_3040.cpp
|
||||||
|
@@ -0,0 +1,62 @@
|
||||||
|
+void main()
|
||||||
|
+{
|
||||||
|
+ switch (opcode ) {
|
||||||
|
+
|
||||||
|
+ case LocaleCompare:
|
||||||
|
+ {
|
||||||
|
+ return Number(localeCompare(s, a0.toString(exec)));
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+#ifndef KJS_PURE_ECMA
|
||||||
|
+ case Big:
|
||||||
|
+ {
|
||||||
|
+ result = String("<big>" + s + "</big>");
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+#endif
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ switch (ev->command)
|
||||||
|
+ {
|
||||||
|
+ case (MIDI_NOTEON):
|
||||||
|
+ {
|
||||||
|
+ ev->note = *ptrdata; ptrdata++; currentpos++;
|
||||||
|
+ ev->vel = *ptrdata; ptrdata++; currentpos++;
|
||||||
|
+ if (ev->vel==0)
|
||||||
|
+ note[ev->chn][ev->note]=FALSE;
|
||||||
|
+ else
|
||||||
|
+ note[ev->chn][ev->note]=TRUE;
|
||||||
|
+
|
||||||
|
+#ifdef TRACKDEBUG2
|
||||||
|
+ if (ev->chn==6) {
|
||||||
|
+ if (ev->vel==0) printfdebug("Note Onf\n");
|
||||||
|
+ else printfdebug("Note On\n");
|
||||||
|
+ };
|
||||||
|
+#endif
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ case (MIDI_NOTEOFF):
|
||||||
|
+ {
|
||||||
|
+#ifdef TRACKDEBUG2
|
||||||
|
+ if (ev->chn==6) printfdebug("Note Off\n");
|
||||||
|
+#endif
|
||||||
|
+ ev->note = *ptrdata; ptrdata++; currentpos++;
|
||||||
|
+ ev->vel = *ptrdata; ptrdata++; currentpos++;
|
||||||
|
+ note[ev->chn][ev->note]=FALSE;
|
||||||
|
+
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ case (MIDI_KEY_PRESSURE):
|
||||||
|
+ {
|
||||||
|
+#ifdef TRACKDEBUG2
|
||||||
|
+ if (ev->chn==6) printfdebug ("Key press\n");
|
||||||
|
+#endif
|
||||||
|
+ ev->note = *ptrdata; ptrdata++; currentpos++;
|
||||||
|
+ ev->vel = *ptrdata; ptrdata++; currentpos++;
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/tests/input/cpp/Issue_3040.cpp
|
||||||
|
@@ -0,0 +1,52 @@
|
||||||
|
+void main()
|
||||||
|
+{
|
||||||
|
+ switch (opcode ) {
|
||||||
|
+
|
||||||
|
+ case LocaleCompare:
|
||||||
|
+ return Number(localeCompare(s, a0.toString(exec)));
|
||||||
|
+
|
||||||
|
+#ifndef KJS_PURE_ECMA
|
||||||
|
+ case Big:
|
||||||
|
+ result = String("<big>" + s + "</big>");
|
||||||
|
+ break;
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ switch (ev->command)
|
||||||
|
+ {
|
||||||
|
+ case (MIDI_NOTEON):
|
||||||
|
+ ev->note = *ptrdata; ptrdata++; currentpos++;
|
||||||
|
+ ev->vel = *ptrdata; ptrdata++; currentpos++;
|
||||||
|
+ if (ev->vel==0)
|
||||||
|
+ note[ev->chn][ev->note]=FALSE;
|
||||||
|
+ else
|
||||||
|
+ note[ev->chn][ev->note]=TRUE;
|
||||||
|
+
|
||||||
|
+#ifdef TRACKDEBUG2
|
||||||
|
+ if (ev->chn==6) {
|
||||||
|
+ if (ev->vel==0) printfdebug("Note Onf\n");
|
||||||
|
+ else printfdebug("Note On\n");
|
||||||
|
+ };
|
||||||
|
+#endif
|
||||||
|
+ break;
|
||||||
|
+ case (MIDI_NOTEOFF) :
|
||||||
|
+#ifdef TRACKDEBUG2
|
||||||
|
+ if (ev->chn==6) printfdebug("Note Off\n");
|
||||||
|
+#endif
|
||||||
|
+ ev->note = *ptrdata;ptrdata++;currentpos++;
|
||||||
|
+ ev->vel = *ptrdata;ptrdata++;currentpos++;
|
||||||
|
+ note[ev->chn][ev->note]=FALSE;
|
||||||
|
+
|
||||||
|
+ break;
|
||||||
|
+ case (MIDI_KEY_PRESSURE) :
|
||||||
|
+#ifdef TRACKDEBUG2
|
||||||
|
+ if (ev->chn==6) printfdebug ("Key press\n");
|
||||||
|
+#endif
|
||||||
|
+ ev->note = *ptrdata;ptrdata++;currentpos++;
|
||||||
|
+ ev->vel = *ptrdata;ptrdata++;currentpos++;
|
||||||
|
+ break;
|
||||||
|
+
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
Loading…
Reference in new issue