6#include <QLoggingCategory>
20 if (belowTop <
states.size())
29 staticMetaObject.enumerator(staticMetaObject.indexOfEnumerator(
"StateType"));
40 if (
newState == StateType::BracketOpen)
61 if (topState == StateType::IfStatement) {
62 if (poppedState.
type != StateType::MaybeElse)
66 }
else if (topState == StateType::ElseClause) {
70 }
else if (topState == StateType::TryStatement) {
71 if (poppedState.
type != StateType::MaybeCatchOrFinally
72 && poppedState.
type != StateType::FinallyStatement) {
91 static const Token empty;
116 case QQmlJSGrammar::T_LPAREN:
119 case QQmlJSGrammar::T_LBRACKET:
122 case QQmlJSGrammar::T_LBRACE:
123 newState = StateType::ObjectliteralOpen;
125 case QQmlJSGrammar::T_FUNCTION:
126 newState = StateType::FunctionStart;
128 case QQmlJSGrammar::T_QUESTION:
133 if (
newState != StateType::Invalid) {
146 const int kind =
t.lexKind;
148 case QQmlJSGrammar::T_AUTOMATIC_SEMICOLON:
149 case QQmlJSGrammar::T_COMPATIBILITY_SEMICOLON:
150 case QQmlJSGrammar::T_SEMICOLON:
154 case QQmlJSGrammar::T_BREAK:
155 case QQmlJSGrammar::T_CONTINUE:
156 enterState(StateType::BreakcontinueStatement);
158 case QQmlJSGrammar::T_THROW:
162 case QQmlJSGrammar::T_RETURN:
166 case QQmlJSGrammar::T_WHILE:
167 case QQmlJSGrammar::T_FOR:
168 case QQmlJSGrammar::T_CATCH:
169 enterState(StateType::StatementWithCondition);
171 case QQmlJSGrammar::T_SWITCH:
174 case QQmlJSGrammar::T_IF:
177 case QQmlJSGrammar::T_DO:
181 case QQmlJSGrammar::T_CASE:
182 case QQmlJSGrammar::T_DEFAULT:
185 case QQmlJSGrammar::T_TRY:
188 case QQmlJSGrammar::T_LBRACE:
191 case QQmlJSGrammar::T_VAR:
192 case QQmlJSGrammar::T_PLUS_PLUS:
193 case QQmlJSGrammar::T_MINUS_MINUS:
194 case QQmlJSGrammar::T_IMPORT:
195 case QQmlJSGrammar::T_SIGNAL:
196 case QQmlJSGrammar::T_ON:
197 case QQmlJSGrammar::T_AS:
198 case QQmlJSGrammar::T_PROPERTY:
199 case QQmlJSGrammar::T_REQUIRED:
200 case QQmlJSGrammar::T_READONLY:
201 case QQmlJSGrammar::T_FUNCTION:
202 case QQmlJSGrammar::T_FUNCTION_STAR:
203 case QQmlJSGrammar::T_NUMERIC_LITERAL:
204 case QQmlJSGrammar::T_LPAREN:
226 qCDebug(formatterLog) <<
"Current state:";
238 auto leave = [
this](
bool statementDone =
false) { this->
leaveState(statementDone); };
242 qCDebug(formatterLog) <<
"Starting to look at " <<
line;
246 const int kind = currentToken.
lexKind;
258 case StateType::TopmostIntro:
260 case QQmlJSGrammar::T_IDENTIFIER:
261 enter(StateType::ObjectdefinitionOrJs);
263 case QQmlJSGrammar::T_IMPORT:
264 enter(StateType::TopQml);
266 case QQmlJSGrammar::T_LBRACE:
267 enter(StateType::TopJs);
268 enter(StateType::Expression);
271 enter(StateType::TopJs);
276 case StateType::TopQml:
278 case QQmlJSGrammar::T_IMPORT:
279 enter(StateType::ImportStart);
281 case QQmlJSGrammar::T_IDENTIFIER:
282 enter(StateType::BindingOrObjectdefinition);
286 enter(StateType::BindingOrObjectdefinition);
291 case StateType::TopJs:
295 case StateType::ObjectdefinitionOrJs:
297 case QQmlJSGrammar::T_DOT:
299 case QQmlJSGrammar::T_LBRACE:
300 turnInto(StateType::BindingOrObjectdefinition);
304 turnInto(StateType::TopJs);
310 case StateType::ImportStart:
311 enter(StateType::ImportMaybeDotOrVersionOrAs);
314 case StateType::ImportMaybeDotOrVersionOrAs:
316 case QQmlJSGrammar::T_DOT:
317 turnInto(StateType::ImportDot);
319 case QQmlJSGrammar::T_AS:
320 turnInto(StateType::ImportAs);
322 case QQmlJSGrammar::T_NUMERIC_LITERAL:
323 case QQmlJSGrammar::T_VERSION_NUMBER:
324 turnInto(StateType::ImportMaybeAs);
333 case StateType::ImportMaybeAs:
335 case QQmlJSGrammar::T_AS:
336 turnInto(StateType::ImportAs);
345 case StateType::ImportDot:
347 turnInto(StateType::ImportMaybeDotOrVersionOrAs);
355 case StateType::ImportAs:
362 case StateType::BindingOrObjectdefinition:
364 case QQmlJSGrammar::T_COLON:
365 enter(StateType::BindingAssignment);
367 case QQmlJSGrammar::T_LBRACE:
368 enter(StateType::ObjectdefinitionOpen);
373 case StateType::BindingAssignment:
375 case QQmlJSGrammar::T_AUTOMATIC_SEMICOLON:
376 case QQmlJSGrammar::T_COMPATIBILITY_SEMICOLON:
377 case QQmlJSGrammar::T_SEMICOLON:
380 case QQmlJSGrammar::T_IF:
381 enter(StateType::IfStatement);
383 case QQmlJSGrammar::T_WITH:
384 enter(StateType::StatementWithCondition);
386 case QQmlJSGrammar::T_TRY:
387 enter(StateType::TryStatement);
389 case QQmlJSGrammar::T_SWITCH:
390 enter(StateType::SwitchStatement);
392 case QQmlJSGrammar::T_LBRACE:
393 enter(StateType::JsblockOpen);
395 case QQmlJSGrammar::T_ON:
396 case QQmlJSGrammar::T_AS:
397 case QQmlJSGrammar::T_IMPORT:
398 case QQmlJSGrammar::T_SIGNAL:
399 case QQmlJSGrammar::T_PROPERTY:
400 case QQmlJSGrammar::T_REQUIRED:
401 case QQmlJSGrammar::T_READONLY:
402 case QQmlJSGrammar::T_IDENTIFIER:
403 enter(StateType::ExpressionOrObjectdefinition);
407 case QQmlJSGrammar::T_RBRACKET:
408 case QQmlJSGrammar::T_RPAREN:
413 enter(StateType::Expression);
418 case StateType::ObjectdefinitionOpen:
420 case QQmlJSGrammar::T_RBRACE:
423 case QQmlJSGrammar::T_DEFAULT:
424 case QQmlJSGrammar::T_READONLY:
425 enter(StateType::PropertyModifiers);
427 case QQmlJSGrammar::T_PROPERTY:
428 enter(StateType::PropertyStart);
430 case QQmlJSGrammar::T_REQUIRED:
431 enter(StateType::RequiredProperty);
433 case QQmlJSGrammar::T_COMPONENT:
434 enter(StateType::ComponentStart);
436 case QQmlJSGrammar::T_FUNCTION:
437 case QQmlJSGrammar::T_FUNCTION_STAR:
438 enter(StateType::FunctionStart);
440 case QQmlJSGrammar::T_SIGNAL:
441 enter(StateType::SignalStart);
443 case QQmlJSGrammar::T_ENUM:
444 enter(StateType::EnumStart);
446 case QQmlJSGrammar::T_ON:
447 case QQmlJSGrammar::T_AS:
448 case QQmlJSGrammar::T_IMPORT:
449 enter(StateType::BindingOrObjectdefinition);
453 enter(StateType::BindingOrObjectdefinition);
458 case StateType::PropertyModifiers:
460 case QQmlJSGrammar::T_PROPERTY:
461 turnInto(StateType::PropertyStart);
463 case QQmlJSGrammar::T_DEFAULT:
464 case QQmlJSGrammar::T_READONLY:
466 case QQmlJSGrammar::T_REQUIRED:
467 turnInto(StateType::RequiredProperty);
475 case StateType::PropertyStart:
477 case QQmlJSGrammar::T_COLON:
478 enter(StateType::BindingAssignment);
480 case QQmlJSGrammar::T_VAR:
481 case QQmlJSGrammar::T_IDENTIFIER:
482 enter(StateType::PropertyName);
486 enter(StateType::PropertyListOpen);
494 case StateType::RequiredProperty:
496 case QQmlJSGrammar::T_PROPERTY:
497 turnInto(StateType::PropertyStart);
499 case QQmlJSGrammar::T_DEFAULT:
500 case QQmlJSGrammar::T_READONLY:
501 turnInto(StateType::PropertyModifiers);
503 case QQmlJSGrammar::T_IDENTIFIER:
512 case StateType::ComponentStart:
514 case QQmlJSGrammar::T_IDENTIFIER:
515 turnInto(StateType::ComponentName);
523 case StateType::ComponentName:
525 case QQmlJSGrammar::T_COLON:
526 enter(StateType::BindingAssignment);
534 case StateType::PropertyName:
535 turnInto(StateType::PropertyMaybeInitializer);
538 case StateType::PropertyListOpen: {
541 turnInto(StateType::PropertyName);
544 case StateType::PropertyMaybeInitializer:
546 case QQmlJSGrammar::T_COLON:
547 turnInto(StateType::BindingAssignment);
555 case StateType::EnumStart:
557 case QQmlJSGrammar::T_LBRACE:
558 enter(StateType::ObjectliteralOpen);
563 case StateType::SignalStart:
565 case QQmlJSGrammar::T_COLON:
566 enter(StateType::BindingAssignment);
569 enter(StateType::SignalMaybeArglist);
574 case StateType::SignalMaybeArglist:
576 case QQmlJSGrammar::T_LPAREN:
577 turnInto(StateType::SignalArglistOpen);
585 case StateType::SignalArglistOpen:
587 case QQmlJSGrammar::T_RPAREN:
593 case StateType::FunctionStart:
595 case QQmlJSGrammar::T_LPAREN:
596 enter(StateType::FunctionArglistOpen);
601 case StateType::FunctionArglistOpen:
603 case QQmlJSGrammar::T_COLON:
604 enter(StateType::TypeAnnotation);
606 case QQmlJSGrammar::T_RPAREN:
607 turnInto(StateType::FunctionArglistClosed);
612 case StateType::FunctionArglistClosed:
614 case QQmlJSGrammar::T_COLON:
615 enter(StateType::TypeAnnotation);
617 case QQmlJSGrammar::T_LBRACE:
618 turnInto(StateType::JsblockOpen);
626 case StateType::TypeAnnotation:
628 case QQmlJSGrammar::T_IDENTIFIER:
629 case QQmlJSGrammar::T_DOT:
631 case QQmlJSGrammar::T_LT:
632 turnInto(StateType::TypeParameter);
640 case StateType::TypeParameter:
642 case QQmlJSGrammar::T_LT:
643 enter(StateType::TypeParameter);
645 case QQmlJSGrammar::T_GT:
651 case StateType::ExpressionOrObjectdefinition:
653 case QQmlJSGrammar::T_DOT:
656 case QQmlJSGrammar::T_LBRACE:
657 turnInto(StateType::ObjectdefinitionOpen);
661 case QQmlJSGrammar::T_RBRACKET:
662 case QQmlJSGrammar::T_RPAREN:
670 enter(StateType::Expression);
675 case StateType::ExpressionOrLabel:
677 case QQmlJSGrammar::T_COLON:
678 turnInto(StateType::LabelledStatement);
682 case QQmlJSGrammar::T_RBRACKET:
683 case QQmlJSGrammar::T_RPAREN:
688 enter(StateType::Expression);
693 case StateType::TernaryOp:
694 if (kind == QQmlJSGrammar::T_COLON) {
695 enter(StateType::TernaryOpAfterColon);
696 enter(StateType::ExpressionContinuation);
700 case StateType::TernaryOpAfterColon:
701 case StateType::Expression:
705 case QQmlJSGrammar::T_COMMA:
708 case QQmlJSGrammar::T_RBRACKET:
709 case QQmlJSGrammar::T_RPAREN:
712 case QQmlJSGrammar::T_RBRACE:
715 case QQmlJSGrammar::T_AUTOMATIC_SEMICOLON:
716 case QQmlJSGrammar::T_COMPATIBILITY_SEMICOLON:
717 case QQmlJSGrammar::T_SEMICOLON:
722 enter(StateType::ExpressionContinuation);
727 case StateType::ExpressionContinuation:
731 case StateType::ExpressionMaybeContinuation:
733 case QQmlJSGrammar::T_QUESTION:
734 case QQmlJSGrammar::T_LBRACKET:
735 case QQmlJSGrammar::T_LPAREN:
736 case QQmlJSGrammar::T_LBRACE:
745 case StateType::ParenOpen:
749 case QQmlJSGrammar::T_RPAREN:
755 case StateType::BracketOpen:
759 case QQmlJSGrammar::T_COMMA:
760 enter(StateType::BracketElementStart);
762 case QQmlJSGrammar::T_RBRACKET:
768 case StateType::ObjectliteralOpen:
772 case QQmlJSGrammar::T_COLON:
773 enter(StateType::ObjectliteralAssignment);
775 case QQmlJSGrammar::T_RBRACKET:
776 case QQmlJSGrammar::T_RPAREN:
779 case QQmlJSGrammar::T_RBRACE:
786 case StateType::ObjectliteralAssignment:
790 case QQmlJSGrammar::T_COMMA:
793 case QQmlJSGrammar::T_RBRACKET:
794 case QQmlJSGrammar::T_RPAREN:
797 case QQmlJSGrammar::T_RBRACE:
802 enter(StateType::ExpressionContinuation);
807 case StateType::BracketElementStart:
809 turnInto(StateType::BracketElementMaybeObjectdefinition);
816 case StateType::BracketElementMaybeObjectdefinition:
818 case QQmlJSGrammar::T_LBRACE:
819 turnInto(StateType::ObjectdefinitionOpen);
827 case StateType::JsblockOpen:
828 case StateType::SubstatementOpen:
832 case QQmlJSGrammar::T_RBRACE:
838 case StateType::LabelledStatement:
844 case StateType::Substatement:
846 if (kind != QQmlJSGrammar::T_LBRACE) {
851 case QQmlJSGrammar::T_LBRACE:
852 turnInto(StateType::SubstatementOpen);
857 case StateType::IfStatement:
859 case QQmlJSGrammar::T_LPAREN:
860 enter(StateType::ConditionOpen);
868 case StateType::MaybeElse:
870 case QQmlJSGrammar::T_ELSE:
871 turnInto(StateType::ElseClause);
872 enter(StateType::Substatement);
880 case StateType::MaybeCatchOrFinally:
882 case QQmlJSGrammar::T_CATCH:
883 turnInto(StateType::CatchStatement);
885 case QQmlJSGrammar::T_FINALLY:
886 turnInto(StateType::FinallyStatement);
894 case StateType::ElseClause:
901 case StateType::ConditionOpen:
905 case QQmlJSGrammar::T_RPAREN:
906 turnInto(StateType::Substatement);
911 case StateType::SwitchStatement:
912 case StateType::CatchStatement:
913 case StateType::StatementWithCondition:
915 case QQmlJSGrammar::T_LPAREN:
916 enter(StateType::StatementWithConditionParenOpen);
923 case StateType::StatementWithConditionParenOpen:
927 case QQmlJSGrammar::T_RPAREN:
928 turnInto(StateType::Substatement);
933 case StateType::TryStatement:
934 case StateType::FinallyStatement:
936 case QQmlJSGrammar::T_LBRACE:
937 enter(StateType::JsblockOpen);
945 case StateType::DoStatement:
947 case QQmlJSGrammar::T_WHILE:
949 case QQmlJSGrammar::T_LPAREN:
950 enter(StateType::DoStatementWhileParenOpen);
958 case StateType::DoStatementWhileParenOpen:
962 case QQmlJSGrammar::T_RPAREN:
969 case StateType::BreakcontinueStatement:
970 if (Token ::lexKindIsIdentifier(kind)) {
978 case StateType::CaseStart:
980 case QQmlJSGrammar::T_COLON:
981 turnInto(StateType::CaseCont);
986 case StateType::CaseCont:
987 if (kind != QQmlJSGrammar::T_CASE && kind != QQmlJSGrammar::T_DEFAULT &&
tryStatement())
990 case QQmlJSGrammar::T_RBRACE:
993 case QQmlJSGrammar::T_DEFAULT:
994 case QQmlJSGrammar::T_CASE:
1000 case StateType::MultilineCommentStart:
1001 case StateType::MultilineCommentCont:
1010 turnInto(StateType::MultilineCommentCont);
1025 if (topState == StateType::ExpressionOrLabel)
1028 else if (topState == StateType::BreakcontinueStatement)
1034 if (topState == StateType::Expression || topState == StateType::ExpressionOrObjectdefinition
1035 || topState == StateType::ObjectliteralAssignment
1036 || topState == StateType::TernaryOpAfterColon) {
1037 enterState(StateType::ExpressionMaybeContinuation);
1040 if (topState != StateType::MultilineCommentStart && topState != StateType::MultilineCommentCont
1042 enterState(StateType::MultilineCommentStart);
1057 if (topState.
type == StateType::MultilineCommentStart
1058 || topState.
type == StateType::MultilineCommentCont) {
1070 switch (tokenKind) {
1071 case QQmlJSGrammar::T_LBRACE:
1072 if (topState.
type == StateType::Substatement
1073 || topState.
type == StateType::BindingAssignment
1074 || topState.
type == StateType::CaseCont) {
1078 case QQmlJSGrammar::T_RBRACE: {
1079 if (topState.
type == StateType::JsblockOpen && previousState.
type == StateType::CaseCont) {
1082 for (
int i = 0; oldStatus.
state(
i).
type != StateType::TopmostIntro; ++
i) {
1084 if (
type == StateType::ObjectdefinitionOpen ||
type == StateType::JsblockOpen
1085 ||
type == StateType::SubstatementOpen ||
type == StateType::ObjectliteralOpen) {
1091 case QQmlJSGrammar::T_RBRACKET:
1092 for (
int i = 0; oldStatus.
state(
i).
type != StateType::TopmostIntro; ++
i) {
1094 if (
type == StateType::BracketOpen) {
1099 case QQmlJSGrammar::T_LBRACKET:
1100 case QQmlJSGrammar::T_LPAREN:
1101 if (topState.
type == StateType::ExpressionMaybeContinuation)
1104 case QQmlJSGrammar::T_ELSE:
1105 if (topState.
type == StateType::MaybeElse) {
1107 }
else if (topState.
type == StateType::ExpressionMaybeContinuation) {
1108 bool hasElse =
false;
1109 for (
int i = 1; oldStatus.
state(
i).
type != StateType::TopmostIntro; ++
i) {
1111 if (
type == StateType::ElseClause)
1113 if (
type == StateType::IfStatement) {
1123 case QQmlJSGrammar::T_CATCH:
1124 case QQmlJSGrammar::T_FINALLY:
1125 if (topState.
type == StateType::MaybeCatchOrFinally)
1128 case QQmlJSGrammar::T_COLON:
1129 if (topState.
type == StateType::TernaryOp)
1130 return indentDepth - 2;
1132 case QQmlJSGrammar::T_QUESTION:
1133 if (topState.
type == StateType::ExpressionMaybeContinuation)
1137 case QQmlJSGrammar::T_DEFAULT:
1138 case QQmlJSGrammar::T_CASE:
1139 for (
int i = 0; oldStatus.
state(
i).
type != StateType::TopmostIntro; ++
i) {
1141 if (
type == StateType::SwitchStatement ||
type == StateType::CaseCont) {
1143 }
else if (
type == StateType::TopmostIntro) {
1150 && topState.
type == StateType::ExpressionMaybeContinuation)
1205 int *savedIndentDepth)
const
1214 case StateType::ObjectdefinitionOpen: {
1216 if (parentState.
type == StateType::BindingAssignment)
1220 *savedIndentDepth = tokenPosition;
1226 case StateType::BindingOrObjectdefinition:
1228 *indentDepth = *savedIndentDepth = tokenPosition;
1231 case StateType::BindingAssignment:
1232 case StateType::ObjectliteralAssignment:
1239 case StateType::ExpressionOrObjectdefinition:
1240 *indentDepth = tokenPosition;
1243 case StateType::ExpressionOrLabel:
1244 if (*indentDepth == tokenPosition)
1247 *indentDepth = tokenPosition;
1250 case StateType::Expression:
1251 if (*indentDepth == tokenPosition) {
1254 if (parentState.
type != StateType::ExpressionOrObjectdefinition
1255 && parentState.
type != StateType::ExpressionOrLabel
1256 && parentState.
type != StateType::BindingAssignment) {
1262 else if (parentState.
type != StateType::ExpressionOrObjectdefinition
1263 && parentState.
type != StateType::ExpressionOrLabel) {
1264 *indentDepth = tokenPosition;
1268 case StateType::ExpressionMaybeContinuation:
1280 case StateType::BracketOpen:
1281 if (parentState.
type == StateType::Expression
1285 }
else if (parentState.
type == StateType::ObjectliteralAssignment) {
1288 }
else if (!lastToken) {
1289 *indentDepth = tokenPosition + 1;
1295 case StateType::FunctionStart:
1300 case StateType::DoStatementWhileParenOpen:
1301 case StateType::StatementWithConditionParenOpen:
1302 case StateType::SignalArglistOpen:
1303 case StateType::FunctionArglistOpen:
1304 case StateType::ParenOpen:
1306 *indentDepth = tokenPosition + 1;
1311 case StateType::TernaryOp:
1313 *indentDepth = tokenPosition + tk.
length + 1;
1318 case StateType::JsblockOpen:
1320 if (parentState.
type == StateType::CaseCont) {
1325 case StateType::SubstatementOpen:
1327 if (parentState.
type == StateType::BindingAssignment)
1332 case StateType::Substatement:
1336 case StateType::ObjectliteralOpen:
1337 if (parentState.
type == StateType::Expression
1338 || parentState.
type == StateType::ObjectliteralAssignment) {
1344 *savedIndentDepth = *indentDepth;
1349 case StateType::StatementWithCondition:
1350 case StateType::TryStatement:
1351 case StateType::CatchStatement:
1352 case StateType::FinallyStatement:
1353 case StateType::IfStatement:
1354 case StateType::DoStatement:
1355 case StateType::SwitchStatement:
1356 if (firstToken || parentState.
type == StateType::BindingAssignment)
1357 *savedIndentDepth = tokenPosition;
1359 *indentDepth = *savedIndentDepth;
1361 if (!firstToken &&
newState == StateType::IfStatement
1362 && parentState.
type == StateType::Substatement
1365 *savedIndentDepth = *indentDepth;
1369 case StateType::MaybeElse:
1370 case StateType::MaybeCatchOrFinally: {
1372 int lastNonEndState = 0;
1380 case StateType::ConditionOpen:
1385 *indentDepth = tokenPosition + 1;
1388 case StateType::CaseStart:
1389 *savedIndentDepth = tokenPosition;
1392 case StateType::CaseCont:
1396 case StateType::MultilineCommentStart:
1397 *indentDepth = tokenPosition + 2;
1400 case StateType::MultilineCommentCont:
1401 *indentDepth = tokenPosition;
constexpr bool isUpper() const noexcept
Returns true if the character is an uppercase letter, for example category() is Letter_Uppercase.
constexpr bool isSpace() const noexcept
Returns true if the character is a separator character (Separator_* categories or certain code points...
static bool isBracelessState(StateType type)
static QString stateToString(StateType type)
void pushState(StateType type, quint16 savedIndentDepth)
State state(int belowTop=0) const
Scanner::State lexerState
static bool isExpressionEndState(StateType type)
static bool lexKindIsIdentifier(int kind)
static bool lexKindIsComment(int kind)
static bool lexKindIsDelimiter(int kind)
static bool lexKindIsStringType(int kind)
static bool lexKindIsInvalid(int kind)
constexpr qsizetype size() const noexcept
Returns the size of this string view, in UTF-16 code units (that is, surrogate pairs count as two for...
constexpr QChar at(qsizetype n) const noexcept
Returns the character at position n in this string view.
constexpr QStringView mid(qsizetype pos, qsizetype n=-1) const noexcept
Returns the substring of length length starting at position start in this object.
\macro QT_RESTRICTED_CAST_FROM_ASCII
static QString fromUtf8(QByteArrayView utf8)
This is an overloaded member function, provided for convenience. It differs from the above function o...
void newState(QList< State > &states, const char *token, const char *lexem, bool pre)
FormatPartialStatus formatCodeLine(QStringView line, const FormatOptions &options, const FormatTextStatus &initialStatus)
int indentForLineStartingWithToken(const FormatTextStatus &oldStatus, const FormatOptions &, int tokenKind)
Combined button and popup list for selecting options.
#define Q_LOGGING_CATEGORY(name,...)
#define qCDebug(category,...)
GLenum GLenum GLsizei void GLsizei void * column
QtPrivate::QRegularExpressionMatchIteratorRangeBasedForIterator begin(const QRegularExpressionMatchIterator &iterator)