| 9 | } |
| 10 | |
| 11 | void AlignAnalyzer::Analyze(FormatState &f, const LuaSyntaxTree &t) { |
| 12 | for (auto syntaxNode: t.GetSyntaxNodes()) { |
| 13 | if (syntaxNode.IsNode(t)) { |
| 14 | switch (syntaxNode.GetSyntaxKind(t)) { |
| 15 | case LuaSyntaxNodeKind::Block: { |
| 16 | if (f.GetStyle().align_continuous_assign_statement != ContinuousAlign::None) { |
| 17 | AnalyzeContinuousLocalOrAssign(f, syntaxNode, t); |
| 18 | } |
| 19 | if (f.GetStyle().align_continuous_similar_call_args) { |
| 20 | AnalyzeContinuousSimilarCallArgs(f, syntaxNode, t); |
| 21 | } |
| 22 | |
| 23 | break; |
| 24 | } |
| 25 | case LuaSyntaxNodeKind::TableFieldList: { |
| 26 | if (f.GetStyle().align_continuous_rect_table_field != ContinuousAlign::None) { |
| 27 | AnalyzeContinuousRectField(f, syntaxNode, t); |
| 28 | } |
| 29 | if (f.GetStyle().align_array_table != AlignArrayTable::None) { |
| 30 | AnalyzeContinuousArrayTableField(f, syntaxNode, t); |
| 31 | } |
| 32 | break; |
| 33 | } |
| 34 | case LuaSyntaxNodeKind::CallExpression: { |
| 35 | if (f.GetStyle().align_call_args) { |
| 36 | auto exprList = syntaxNode.GetChildSyntaxNode(LuaSyntaxNodeKind::ExpressionList, t); |
| 37 | auto exprs = exprList.GetChildSyntaxNodes(LuaSyntaxMultiKind::Expression, t); |
| 38 | auto symbolLine = exprList.GetPrevToken(t).GetEndLine(t); |
| 39 | bool sameLine = true; |
| 40 | for (auto expr: exprs) { |
| 41 | sameLine = sameLine && expr.GetStartLine(t) == symbolLine; |
| 42 | } |
| 43 | if (sameLine) { |
| 44 | break; |
| 45 | } |
| 46 | AnalyzeExpressionList(f, exprList, t); |
| 47 | } |
| 48 | break; |
| 49 | } |
| 50 | case LuaSyntaxNodeKind::ParamList: { |
| 51 | if (f.GetStyle().align_function_params) { |
| 52 | AnalyzeParamList(f, syntaxNode, t); |
| 53 | } |
| 54 | break; |
| 55 | } |
| 56 | case LuaSyntaxNodeKind::IfStatement: { |
| 57 | if (f.GetStyle().align_if_branch) { |
| 58 | AnalyzeIfStatement(f, syntaxNode, t); |
| 59 | } |
| 60 | } |
| 61 | case LuaSyntaxNodeKind::SuffixedExpression: { |
| 62 | if (f.GetStyle().align_chain_expr != AlignChainExpr::None) { |
| 63 | AnalyzeChainExpr(f, syntaxNode, t); |
| 64 | } |
| 65 | } |
| 66 | default: { |
| 67 | break; |
| 68 | } |
nothing calls this directly
no test coverage detected