| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 import 'package:front_end/src/fasta/scanner.dart' show Token; | 5 import 'package:front_end/src/fasta/scanner.dart' show Token; |
| 6 import 'package:front_end/src/fasta/scanner/token_constants.dart' as Tokens | 6 import 'package:front_end/src/fasta/scanner/token_constants.dart' as Tokens |
| 7 show IDENTIFIER_TOKEN, KEYWORD_TOKEN, PLUS_TOKEN; | 7 show IDENTIFIER_TOKEN, KEYWORD_TOKEN, PLUS_TOKEN; |
| 8 import '../util/util.dart'; | 8 import '../util/util.dart'; |
| 9 import 'nodes.dart'; | 9 import 'nodes.dart'; |
| 10 | 10 |
| (...skipping 19 matching lines...) Expand all Loading... |
| 30 onEmptyLine = true; | 30 onEmptyLine = true; |
| 31 } | 31 } |
| 32 } | 32 } |
| 33 | 33 |
| 34 void space([String token = " "]) { | 34 void space([String token = " "]) { |
| 35 write(minify ? "" : token); | 35 write(minify ? "" : token); |
| 36 } | 36 } |
| 37 | 37 |
| 38 void addToken(Token token) { | 38 void addToken(Token token) { |
| 39 if (token == null) return; | 39 if (token == null) return; |
| 40 write(token.value); | 40 write(token.lexeme); |
| 41 if (identical(token.kind, Tokens.KEYWORD_TOKEN) || | 41 if (identical(token.kind, Tokens.KEYWORD_TOKEN) || |
| 42 identical(token.kind, Tokens.IDENTIFIER_TOKEN)) { | 42 identical(token.kind, Tokens.IDENTIFIER_TOKEN)) { |
| 43 write(' '); | 43 write(' '); |
| 44 } | 44 } |
| 45 } | 45 } |
| 46 | 46 |
| 47 bool onEmptyLine = true; | 47 bool onEmptyLine = true; |
| 48 | 48 |
| 49 write(object) { | 49 write(object) { |
| 50 String s = object.toString(); | 50 String s = object.toString(); |
| 51 if (s == '') return; | 51 if (s == '') return; |
| 52 if (onEmptyLine) { | 52 if (onEmptyLine) { |
| 53 sb.write(indentation); | 53 sb.write(indentation); |
| 54 } | 54 } |
| 55 sb.write(s); | 55 sb.write(s); |
| 56 onEmptyLine = false; | 56 onEmptyLine = false; |
| 57 } | 57 } |
| 58 | 58 |
| 59 unparse(Node node) { | 59 unparse(Node node) { |
| 60 visit(node); | 60 visit(node); |
| 61 } | 61 } |
| 62 | 62 |
| 63 visit(Node node) { | 63 visit(Node node) { |
| 64 if (node != null) node.accept(this); | 64 if (node != null) node.accept(this); |
| 65 } | 65 } |
| 66 | 66 |
| 67 visitAssert(Assert node) { | 67 visitAssert(Assert node) { |
| 68 write(node.assertToken.value); | 68 write(node.assertToken.lexeme); |
| 69 write('('); | 69 write('('); |
| 70 visit(node.condition); | 70 visit(node.condition); |
| 71 if (node.hasMessage) { | 71 if (node.hasMessage) { |
| 72 write(','); | 72 write(','); |
| 73 space(); | 73 space(); |
| 74 visit(node.message); | 74 visit(node.message); |
| 75 } | 75 } |
| 76 write(');'); | 76 write(');'); |
| 77 } | 77 } |
| 78 | 78 |
| 79 visitBlock(Block node) => unparseBlockStatements(node.statements); | 79 visitBlock(Block node) => unparseBlockStatements(node.statements); |
| 80 | 80 |
| 81 unparseBlockStatements(NodeList statements) { | 81 unparseBlockStatements(NodeList statements) { |
| 82 addToken(statements.beginToken); | 82 addToken(statements.beginToken); |
| 83 | 83 |
| 84 Link<Node> nodes = statements.nodes; | 84 Link<Node> nodes = statements.nodes; |
| 85 if (nodes != null && !nodes.isEmpty) { | 85 if (nodes != null && !nodes.isEmpty) { |
| 86 indentMore(); | 86 indentMore(); |
| 87 newline(); | 87 newline(); |
| 88 visit(nodes.head); | 88 visit(nodes.head); |
| 89 for (Link link = nodes.tail; !link.isEmpty; link = link.tail) { | 89 for (Link link = nodes.tail; !link.isEmpty; link = link.tail) { |
| 90 newline(); | 90 newline(); |
| 91 visit(link.head); | 91 visit(link.head); |
| 92 } | 92 } |
| 93 indentLess(); | 93 indentLess(); |
| 94 newline(); | 94 newline(); |
| 95 } | 95 } |
| 96 if (statements.endToken != null) { | 96 if (statements.endToken != null) { |
| 97 write(statements.endToken.value); | 97 write(statements.endToken.lexeme); |
| 98 } | 98 } |
| 99 } | 99 } |
| 100 | 100 |
| 101 visitCascade(Cascade node) { | 101 visitCascade(Cascade node) { |
| 102 visit(node.expression); | 102 visit(node.expression); |
| 103 } | 103 } |
| 104 | 104 |
| 105 visitCascadeReceiver(CascadeReceiver node) { | 105 visitCascadeReceiver(CascadeReceiver node) { |
| 106 visit(node.expression); | 106 visit(node.expression); |
| 107 } | 107 } |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 171 if (node.interfaces != null) { | 171 if (node.interfaces != null) { |
| 172 write(' implements '); | 172 write(' implements '); |
| 173 visit(node.interfaces); | 173 visit(node.interfaces); |
| 174 } | 174 } |
| 175 write(';'); | 175 write(';'); |
| 176 } | 176 } |
| 177 | 177 |
| 178 visitConditional(Conditional node) { | 178 visitConditional(Conditional node) { |
| 179 visit(node.condition); | 179 visit(node.condition); |
| 180 space(); | 180 space(); |
| 181 write(node.questionToken.value); | 181 write(node.questionToken.lexeme); |
| 182 space(); | 182 space(); |
| 183 visit(node.thenExpression); | 183 visit(node.thenExpression); |
| 184 space(); | 184 space(); |
| 185 write(node.colonToken.value); | 185 write(node.colonToken.lexeme); |
| 186 space(); | 186 space(); |
| 187 visit(node.elseExpression); | 187 visit(node.elseExpression); |
| 188 } | 188 } |
| 189 | 189 |
| 190 visitExpressionStatement(ExpressionStatement node) { | 190 visitExpressionStatement(ExpressionStatement node) { |
| 191 visit(node.expression); | 191 visit(node.expression); |
| 192 write(node.endToken.value); | 192 write(node.endToken.lexeme); |
| 193 } | 193 } |
| 194 | 194 |
| 195 visitFor(For node) { | 195 visitFor(For node) { |
| 196 write(node.forToken.value); | 196 write(node.forToken.lexeme); |
| 197 space(); | 197 space(); |
| 198 write('('); | 198 write('('); |
| 199 visit(node.initializer); | 199 visit(node.initializer); |
| 200 write(';'); | 200 write(';'); |
| 201 if (node.conditionStatement is! EmptyStatement) space(); | 201 if (node.conditionStatement is! EmptyStatement) space(); |
| 202 visit(node.conditionStatement); | 202 visit(node.conditionStatement); |
| 203 if (!node.update.nodes.isEmpty) space(); | 203 if (!node.update.nodes.isEmpty) space(); |
| 204 visit(node.update); | 204 visit(node.update); |
| 205 write(')'); | 205 write(')'); |
| 206 space(); | 206 space(); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 233 write(' '); | 233 write(' '); |
| 234 } | 234 } |
| 235 } | 235 } |
| 236 visit(send.selector); | 236 visit(send.selector); |
| 237 } else { | 237 } else { |
| 238 visit(name); | 238 visit(name); |
| 239 } | 239 } |
| 240 } | 240 } |
| 241 | 241 |
| 242 visitAsyncModifier(AsyncModifier node) { | 242 visitAsyncModifier(AsyncModifier node) { |
| 243 write(node.asyncToken.value); | 243 write(node.asyncToken.lexeme); |
| 244 if (node.starToken != null) { | 244 if (node.starToken != null) { |
| 245 write(node.starToken.value); | 245 write(node.starToken.lexeme); |
| 246 } | 246 } |
| 247 } | 247 } |
| 248 | 248 |
| 249 visitFunctionExpression(FunctionExpression node) { | 249 visitFunctionExpression(FunctionExpression node) { |
| 250 if (!node.modifiers.nodes.isEmpty) { | 250 if (!node.modifiers.nodes.isEmpty) { |
| 251 visit(node.modifiers); | 251 visit(node.modifiers); |
| 252 write(' '); | 252 write(' '); |
| 253 } | 253 } |
| 254 if (node.returnType != null && !stripTypes) { | 254 if (node.returnType != null && !stripTypes) { |
| 255 visit(node.returnType); | 255 visit(node.returnType); |
| 256 write(' '); | 256 write(' '); |
| 257 } | 257 } |
| 258 if (node.getOrSet != null) { | 258 if (node.getOrSet != null) { |
| 259 write(node.getOrSet.value); | 259 write(node.getOrSet.lexeme); |
| 260 write(' '); | 260 write(' '); |
| 261 } | 261 } |
| 262 unparseFunctionName(node.name); | 262 unparseFunctionName(node.name); |
| 263 visit(node.typeVariables); | 263 visit(node.typeVariables); |
| 264 visit(node.parameters); | 264 visit(node.parameters); |
| 265 if (node.initializers != null) { | 265 if (node.initializers != null) { |
| 266 space(); | 266 space(); |
| 267 write(':'); | 267 write(':'); |
| 268 space(); | 268 space(); |
| 269 unparseNodeListFrom(node.initializers, node.initializers.nodes, | 269 unparseNodeListFrom(node.initializers, node.initializers.nodes, |
| 270 spaces: true); | 270 spaces: true); |
| 271 } | 271 } |
| 272 if (node.asyncModifier != null) { | 272 if (node.asyncModifier != null) { |
| 273 if (node.getOrSet != null) { | 273 if (node.getOrSet != null) { |
| 274 write(' '); | 274 write(' '); |
| 275 } else { | 275 } else { |
| 276 // Space is optional if this is not a getter. | 276 // Space is optional if this is not a getter. |
| 277 space(); | 277 space(); |
| 278 } | 278 } |
| 279 visit(node.asyncModifier); | 279 visit(node.asyncModifier); |
| 280 } | 280 } |
| 281 if (node.body != null && node.body is! EmptyStatement) { | 281 if (node.body != null && node.body is! EmptyStatement) { |
| 282 space(); | 282 space(); |
| 283 } | 283 } |
| 284 visit(node.body); | 284 visit(node.body); |
| 285 } | 285 } |
| 286 | 286 |
| 287 visitIdentifier(Identifier node) { | 287 visitIdentifier(Identifier node) { |
| 288 write(node.token.value); | 288 write(node.token.lexeme); |
| 289 } | 289 } |
| 290 | 290 |
| 291 visitIf(If node) { | 291 visitIf(If node) { |
| 292 write(node.ifToken.value); | 292 write(node.ifToken.lexeme); |
| 293 space(); | 293 space(); |
| 294 visit(node.condition); | 294 visit(node.condition); |
| 295 space(); | 295 space(); |
| 296 visit(node.thenPart); | 296 visit(node.thenPart); |
| 297 if (node.hasElsePart) { | 297 if (node.hasElsePart) { |
| 298 space(); | 298 space(); |
| 299 write(node.elseToken.value); | 299 write(node.elseToken.lexeme); |
| 300 space(); | 300 space(); |
| 301 if (node.elsePart is! Block && minify) write(' '); | 301 if (node.elsePart is! Block && minify) write(' '); |
| 302 visit(node.elsePart); | 302 visit(node.elsePart); |
| 303 } | 303 } |
| 304 } | 304 } |
| 305 | 305 |
| 306 visitLiteralBool(LiteralBool node) { | 306 visitLiteralBool(LiteralBool node) { |
| 307 write(node.token.value); | 307 write(node.token.lexeme); |
| 308 } | 308 } |
| 309 | 309 |
| 310 visitLiteralDouble(LiteralDouble node) { | 310 visitLiteralDouble(LiteralDouble node) { |
| 311 write(node.token.value); | 311 write(node.token.lexeme); |
| 312 // -Lit is represented as a send. | 312 // -Lit is represented as a send. |
| 313 if (node.token.kind == Tokens.PLUS_TOKEN) write(node.token.next.value); | 313 if (node.token.kind == Tokens.PLUS_TOKEN) write(node.token.next.lexeme); |
| 314 } | 314 } |
| 315 | 315 |
| 316 visitLiteralInt(LiteralInt node) { | 316 visitLiteralInt(LiteralInt node) { |
| 317 write(node.token.value); | 317 write(node.token.lexeme); |
| 318 // -Lit is represented as a send. | 318 // -Lit is represented as a send. |
| 319 if (node.token.kind == Tokens.PLUS_TOKEN) write(node.token.next.value); | 319 if (node.token.kind == Tokens.PLUS_TOKEN) write(node.token.next.lexeme); |
| 320 } | 320 } |
| 321 | 321 |
| 322 visitLiteralString(LiteralString node) { | 322 visitLiteralString(LiteralString node) { |
| 323 write(node.token.value); | 323 write(node.token.lexeme); |
| 324 } | 324 } |
| 325 | 325 |
| 326 visitStringJuxtaposition(StringJuxtaposition node) { | 326 visitStringJuxtaposition(StringJuxtaposition node) { |
| 327 visit(node.first); | 327 visit(node.first); |
| 328 write(" "); | 328 write(" "); |
| 329 visit(node.second); | 329 visit(node.second); |
| 330 } | 330 } |
| 331 | 331 |
| 332 visitLiteralNull(LiteralNull node) { | 332 visitLiteralNull(LiteralNull node) { |
| 333 write(node.token.value); | 333 write(node.token.lexeme); |
| 334 } | 334 } |
| 335 | 335 |
| 336 visitLiteralSymbol(LiteralSymbol node) { | 336 visitLiteralSymbol(LiteralSymbol node) { |
| 337 write(node.hashToken.value); | 337 write(node.hashToken.lexeme); |
| 338 unparseNodeListOfIdentifiers(node.identifiers); | 338 unparseNodeListOfIdentifiers(node.identifiers); |
| 339 } | 339 } |
| 340 | 340 |
| 341 unparseNodeListOfIdentifiers(NodeList node) { | 341 unparseNodeListOfIdentifiers(NodeList node) { |
| 342 // Manually print the list to avoid spaces around operators in unminified | 342 // Manually print the list to avoid spaces around operators in unminified |
| 343 // code. | 343 // code. |
| 344 Link<Node> l = node.nodes; | 344 Link<Node> l = node.nodes; |
| 345 write(l.head.asIdentifier().token.value); | 345 write(l.head.asIdentifier().token.lexeme); |
| 346 for (l = l.tail; !l.isEmpty; l = l.tail) { | 346 for (l = l.tail; !l.isEmpty; l = l.tail) { |
| 347 write("."); | 347 write("."); |
| 348 write(l.head.asIdentifier().token.value); | 348 write(l.head.asIdentifier().token.lexeme); |
| 349 } | 349 } |
| 350 } | 350 } |
| 351 | 351 |
| 352 visitNewExpression(NewExpression node) { | 352 visitNewExpression(NewExpression node) { |
| 353 addToken(node.newToken); | 353 addToken(node.newToken); |
| 354 visit(node.send); | 354 visit(node.send); |
| 355 } | 355 } |
| 356 | 356 |
| 357 visitLiteralList(LiteralList node) { | 357 visitLiteralList(LiteralList node) { |
| 358 if (node.constKeyword != null) write(node.constKeyword.value); | 358 if (node.constKeyword != null) write(node.constKeyword.lexeme); |
| 359 visit(node.typeArguments); | 359 visit(node.typeArguments); |
| 360 visit(node.elements); | 360 visit(node.elements); |
| 361 // If list is empty, emit space after [] to disambiguate cases like []==[]. | 361 // If list is empty, emit space after [] to disambiguate cases like []==[]. |
| 362 if (minify && node.elements.isEmpty) write(' '); | 362 if (minify && node.elements.isEmpty) write(' '); |
| 363 } | 363 } |
| 364 | 364 |
| 365 visitModifiers(Modifiers node) { | 365 visitModifiers(Modifiers node) { |
| 366 // Spaces are already included as delimiter. | 366 // Spaces are already included as delimiter. |
| 367 unparseNodeList(node.nodes, spaces: false); | 367 unparseNodeList(node.nodes, spaces: false); |
| 368 } | 368 } |
| (...skipping 10 matching lines...) Expand all Loading... |
| 379 if (spaces) space(); | 379 if (spaces) space(); |
| 380 visit(link.head); | 380 visit(link.head); |
| 381 } | 381 } |
| 382 } | 382 } |
| 383 | 383 |
| 384 unparseNodeList(NodeList node, {bool spaces: true}) { | 384 unparseNodeList(NodeList node, {bool spaces: true}) { |
| 385 addToken(node.beginToken); | 385 addToken(node.beginToken); |
| 386 if (node.nodes != null) { | 386 if (node.nodes != null) { |
| 387 unparseNodeListFrom(node, node.nodes, spaces: spaces); | 387 unparseNodeListFrom(node, node.nodes, spaces: spaces); |
| 388 } | 388 } |
| 389 if (node.endToken != null) write(node.endToken.value); | 389 if (node.endToken != null) write(node.endToken.lexeme); |
| 390 } | 390 } |
| 391 | 391 |
| 392 visitNodeList(NodeList node) { | 392 visitNodeList(NodeList node) { |
| 393 unparseNodeList(node); | 393 unparseNodeList(node); |
| 394 } | 394 } |
| 395 | 395 |
| 396 visitOperator(Operator node) { | 396 visitOperator(Operator node) { |
| 397 visitIdentifier(node); | 397 visitIdentifier(node); |
| 398 } | 398 } |
| 399 | 399 |
| 400 visitRedirectingFactoryBody(RedirectingFactoryBody node) { | 400 visitRedirectingFactoryBody(RedirectingFactoryBody node) { |
| 401 space(); | 401 space(); |
| 402 write(node.beginToken.value); | 402 write(node.beginToken.lexeme); |
| 403 space(); | 403 space(); |
| 404 visit(node.constructorReference); | 404 visit(node.constructorReference); |
| 405 write(node.endToken.value); | 405 write(node.endToken.lexeme); |
| 406 } | 406 } |
| 407 | 407 |
| 408 visitRethrow(Rethrow node) { | 408 visitRethrow(Rethrow node) { |
| 409 write('rethrow;'); | 409 write('rethrow;'); |
| 410 } | 410 } |
| 411 | 411 |
| 412 visitReturn(Return node) { | 412 visitReturn(Return node) { |
| 413 write(node.beginToken.value); | 413 write(node.beginToken.lexeme); |
| 414 if (node.hasExpression && node.beginToken.stringValue != '=>') { | 414 if (node.hasExpression && node.beginToken.stringValue != '=>') { |
| 415 write(' '); | 415 write(' '); |
| 416 } | 416 } |
| 417 if (node.beginToken.stringValue == '=>') space(); | 417 if (node.beginToken.stringValue == '=>') space(); |
| 418 visit(node.expression); | 418 visit(node.expression); |
| 419 if (node.endToken != null) write(node.endToken.value); | 419 if (node.endToken != null) write(node.endToken.lexeme); |
| 420 } | 420 } |
| 421 | 421 |
| 422 visitYield(Yield node) { | 422 visitYield(Yield node) { |
| 423 write(node.yieldToken.value); | 423 write(node.yieldToken.lexeme); |
| 424 if (node.starToken != null) { | 424 if (node.starToken != null) { |
| 425 write(node.starToken.value); | 425 write(node.starToken.lexeme); |
| 426 } | 426 } |
| 427 write(' '); | 427 write(' '); |
| 428 visit(node.expression); | 428 visit(node.expression); |
| 429 write(node.endToken.value); | 429 write(node.endToken.lexeme); |
| 430 } | 430 } |
| 431 | 431 |
| 432 unparseSendReceiver(Send node, {bool spacesNeeded: false}) { | 432 unparseSendReceiver(Send node, {bool spacesNeeded: false}) { |
| 433 if (node.receiver == null) return; | 433 if (node.receiver == null) return; |
| 434 visit(node.receiver); | 434 visit(node.receiver); |
| 435 CascadeReceiver asCascadeReceiver = node.receiver.asCascadeReceiver(); | 435 CascadeReceiver asCascadeReceiver = node.receiver.asCascadeReceiver(); |
| 436 if (asCascadeReceiver != null) { | 436 if (asCascadeReceiver != null) { |
| 437 newline(); | 437 newline(); |
| 438 indentMore(); | 438 indentMore(); |
| 439 indentMore(); | 439 indentMore(); |
| 440 write(asCascadeReceiver.cascadeOperator.value); | 440 write(asCascadeReceiver.cascadeOperator.lexeme); |
| 441 indentLess(); | 441 indentLess(); |
| 442 indentLess(); | 442 indentLess(); |
| 443 } else if (node.selector.asOperator() == null) { | 443 } else if (node.selector.asOperator() == null) { |
| 444 write(node.isConditional ? '?.' : '.'); | 444 write(node.isConditional ? '?.' : '.'); |
| 445 } else if (spacesNeeded) { | 445 } else if (spacesNeeded) { |
| 446 write(' '); | 446 write(' '); |
| 447 } | 447 } |
| 448 } | 448 } |
| 449 | 449 |
| 450 unparseSendArgument(Send node, {bool spacesNeeded: false}) { | 450 unparseSendArgument(Send node, {bool spacesNeeded: false}) { |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 530 } | 530 } |
| 531 if (minify && node.assignmentOperator.source != '=') { | 531 if (minify && node.assignmentOperator.source != '=') { |
| 532 write(' '); | 532 write(' '); |
| 533 } | 533 } |
| 534 } | 534 } |
| 535 visit(node.argumentsNode); | 535 visit(node.argumentsNode); |
| 536 } | 536 } |
| 537 } | 537 } |
| 538 | 538 |
| 539 visitThrow(Throw node) { | 539 visitThrow(Throw node) { |
| 540 write(node.throwToken.value); | 540 write(node.throwToken.lexeme); |
| 541 write(' '); | 541 write(' '); |
| 542 visit(node.expression); | 542 visit(node.expression); |
| 543 } | 543 } |
| 544 | 544 |
| 545 visitAwait(Await node) { | 545 visitAwait(Await node) { |
| 546 write(node.awaitToken.value); | 546 write(node.awaitToken.lexeme); |
| 547 write(' '); | 547 write(' '); |
| 548 visit(node.expression); | 548 visit(node.expression); |
| 549 } | 549 } |
| 550 | 550 |
| 551 visitNominalTypeAnnotation(NominalTypeAnnotation node) { | 551 visitNominalTypeAnnotation(NominalTypeAnnotation node) { |
| 552 visit(node.typeName); | 552 visit(node.typeName); |
| 553 visit(node.typeArguments); | 553 visit(node.typeArguments); |
| 554 } | 554 } |
| 555 | 555 |
| 556 visitFunctionTypeAnnotation(FunctionTypeAnnotation node) { | 556 visitFunctionTypeAnnotation(FunctionTypeAnnotation node) { |
| (...skipping 23 matching lines...) Expand all Loading... |
| 580 // TODO(sigurdm): Avoid writing the space when [stripTypes], but still write | 580 // TODO(sigurdm): Avoid writing the space when [stripTypes], but still write |
| 581 // it if the 'type; is var. | 581 // it if the 'type; is var. |
| 582 if (node.type != null) { | 582 if (node.type != null) { |
| 583 visit(node.type); | 583 visit(node.type); |
| 584 write(' '); | 584 write(' '); |
| 585 } | 585 } |
| 586 visit(node.definitions); | 586 visit(node.definitions); |
| 587 } | 587 } |
| 588 | 588 |
| 589 visitDoWhile(DoWhile node) { | 589 visitDoWhile(DoWhile node) { |
| 590 write(node.doKeyword.value); | 590 write(node.doKeyword.lexeme); |
| 591 if (node.body is! Block) { | 591 if (node.body is! Block) { |
| 592 write(' '); | 592 write(' '); |
| 593 } else { | 593 } else { |
| 594 space(); | 594 space(); |
| 595 } | 595 } |
| 596 visit(node.body); | 596 visit(node.body); |
| 597 space(); | 597 space(); |
| 598 write(node.whileKeyword.value); | 598 write(node.whileKeyword.lexeme); |
| 599 space(); | 599 space(); |
| 600 visit(node.condition); | 600 visit(node.condition); |
| 601 write(node.endToken.value); | 601 write(node.endToken.lexeme); |
| 602 } | 602 } |
| 603 | 603 |
| 604 visitWhile(While node) { | 604 visitWhile(While node) { |
| 605 write(node.whileKeyword.value); | 605 write(node.whileKeyword.lexeme); |
| 606 space(); | 606 space(); |
| 607 visit(node.condition); | 607 visit(node.condition); |
| 608 space(); | 608 space(); |
| 609 visit(node.body); | 609 visit(node.body); |
| 610 } | 610 } |
| 611 | 611 |
| 612 visitParenthesizedExpression(ParenthesizedExpression node) { | 612 visitParenthesizedExpression(ParenthesizedExpression node) { |
| 613 write(node.getBeginToken().value); | 613 write(node.getBeginToken().lexeme); |
| 614 visit(node.expression); | 614 visit(node.expression); |
| 615 write(node.getEndToken().value); | 615 write(node.getEndToken().lexeme); |
| 616 } | 616 } |
| 617 | 617 |
| 618 visitStringInterpolation(StringInterpolation node) { | 618 visitStringInterpolation(StringInterpolation node) { |
| 619 visit(node.string); | 619 visit(node.string); |
| 620 unparseNodeList(node.parts, spaces: false); | 620 unparseNodeList(node.parts, spaces: false); |
| 621 } | 621 } |
| 622 | 622 |
| 623 visitStringInterpolationPart(StringInterpolationPart node) { | 623 visitStringInterpolationPart(StringInterpolationPart node) { |
| 624 write('\${'); // TODO(ahe): Preserve the real tokens. | 624 write('\${'); // TODO(ahe): Preserve the real tokens. |
| 625 visit(node.expression); | 625 visit(node.expression); |
| 626 write('}'); | 626 write('}'); |
| 627 visit(node.string); | 627 visit(node.string); |
| 628 } | 628 } |
| 629 | 629 |
| 630 visitEmptyStatement(EmptyStatement node) { | 630 visitEmptyStatement(EmptyStatement node) { |
| 631 write(node.semicolonToken.value); | 631 write(node.semicolonToken.lexeme); |
| 632 } | 632 } |
| 633 | 633 |
| 634 visitGotoStatement(GotoStatement node) { | 634 visitGotoStatement(GotoStatement node) { |
| 635 write(node.keywordToken.value); | 635 write(node.keywordToken.lexeme); |
| 636 if (node.target != null) { | 636 if (node.target != null) { |
| 637 write(' '); | 637 write(' '); |
| 638 visit(node.target); | 638 visit(node.target); |
| 639 } | 639 } |
| 640 write(node.semicolonToken.value); | 640 write(node.semicolonToken.lexeme); |
| 641 } | 641 } |
| 642 | 642 |
| 643 visitBreakStatement(BreakStatement node) { | 643 visitBreakStatement(BreakStatement node) { |
| 644 visitGotoStatement(node); | 644 visitGotoStatement(node); |
| 645 } | 645 } |
| 646 | 646 |
| 647 visitContinueStatement(ContinueStatement node) { | 647 visitContinueStatement(ContinueStatement node) { |
| 648 visitGotoStatement(node); | 648 visitGotoStatement(node); |
| 649 } | 649 } |
| 650 | 650 |
| 651 visitForIn(ForIn node) { | 651 visitForIn(ForIn node) { |
| 652 write(node.forToken.value); | 652 write(node.forToken.lexeme); |
| 653 space(); | 653 space(); |
| 654 write('('); | 654 write('('); |
| 655 visit(node.declaredIdentifier); | 655 visit(node.declaredIdentifier); |
| 656 write(' '); | 656 write(' '); |
| 657 addToken(node.inToken); | 657 addToken(node.inToken); |
| 658 visit(node.expression); | 658 visit(node.expression); |
| 659 write(')'); | 659 write(')'); |
| 660 space(); | 660 space(); |
| 661 visit(node.body); | 661 visit(node.body); |
| 662 } | 662 } |
| 663 | 663 |
| 664 visitAsyncForIn(AsyncForIn node) { | 664 visitAsyncForIn(AsyncForIn node) { |
| 665 write(node.awaitToken.value); | 665 write(node.awaitToken.lexeme); |
| 666 write(' '); | 666 write(' '); |
| 667 visitForIn(node); | 667 visitForIn(node); |
| 668 } | 668 } |
| 669 | 669 |
| 670 visitSyncForIn(SyncForIn node) { | 670 visitSyncForIn(SyncForIn node) { |
| 671 visitForIn(node); | 671 visitForIn(node); |
| 672 } | 672 } |
| 673 | 673 |
| 674 visitLabel(Label node) { | 674 visitLabel(Label node) { |
| 675 visit(node.identifier); | 675 visit(node.identifier); |
| 676 write(node.colonToken.value); | 676 write(node.colonToken.lexeme); |
| 677 } | 677 } |
| 678 | 678 |
| 679 visitLabeledStatement(LabeledStatement node) { | 679 visitLabeledStatement(LabeledStatement node) { |
| 680 visit(node.labels); | 680 visit(node.labels); |
| 681 visit(node.statement); | 681 visit(node.statement); |
| 682 } | 682 } |
| 683 | 683 |
| 684 visitLiteralMap(LiteralMap node) { | 684 visitLiteralMap(LiteralMap node) { |
| 685 if (node.constKeyword != null) write(node.constKeyword.value); | 685 if (node.constKeyword != null) write(node.constKeyword.lexeme); |
| 686 if (node.typeArguments != null) visit(node.typeArguments); | 686 if (node.typeArguments != null) visit(node.typeArguments); |
| 687 visit(node.entries); | 687 visit(node.entries); |
| 688 } | 688 } |
| 689 | 689 |
| 690 visitLiteralMapEntry(LiteralMapEntry node) { | 690 visitLiteralMapEntry(LiteralMapEntry node) { |
| 691 visit(node.key); | 691 visit(node.key); |
| 692 write(node.colonToken.value); | 692 write(node.colonToken.lexeme); |
| 693 space(); | 693 space(); |
| 694 visit(node.value); | 694 visit(node.value); |
| 695 } | 695 } |
| 696 | 696 |
| 697 visitNamedArgument(NamedArgument node) { | 697 visitNamedArgument(NamedArgument node) { |
| 698 visit(node.name); | 698 visit(node.name); |
| 699 write(node.colonToken.value); | 699 write(node.colonToken.lexeme); |
| 700 space(); | 700 space(); |
| 701 visit(node.expression); | 701 visit(node.expression); |
| 702 } | 702 } |
| 703 | 703 |
| 704 visitSwitchStatement(SwitchStatement node) { | 704 visitSwitchStatement(SwitchStatement node) { |
| 705 addToken(node.switchKeyword); | 705 addToken(node.switchKeyword); |
| 706 visit(node.parenthesizedExpression); | 706 visit(node.parenthesizedExpression); |
| 707 space(); | 707 space(); |
| 708 unparseNodeList(node.cases, spaces: false); | 708 unparseNodeList(node.cases, spaces: false); |
| 709 } | 709 } |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 748 if (node.finallyKeyword != null) { | 748 if (node.finallyKeyword != null) { |
| 749 space(); | 749 space(); |
| 750 addToken(node.finallyKeyword); | 750 addToken(node.finallyKeyword); |
| 751 visit(node.finallyBlock); | 751 visit(node.finallyBlock); |
| 752 } | 752 } |
| 753 } | 753 } |
| 754 | 754 |
| 755 visitCaseMatch(CaseMatch node) { | 755 visitCaseMatch(CaseMatch node) { |
| 756 addToken(node.caseKeyword); | 756 addToken(node.caseKeyword); |
| 757 visit(node.expression); | 757 visit(node.expression); |
| 758 write(node.colonToken.value); | 758 write(node.colonToken.lexeme); |
| 759 } | 759 } |
| 760 | 760 |
| 761 visitCatchBlock(CatchBlock node) { | 761 visitCatchBlock(CatchBlock node) { |
| 762 addToken(node.onKeyword); | 762 addToken(node.onKeyword); |
| 763 if (node.type != null) { | 763 if (node.type != null) { |
| 764 visit(node.type); | 764 visit(node.type); |
| 765 write(' '); | 765 write(' '); |
| 766 } | 766 } |
| 767 space(); | 767 space(); |
| 768 addToken(node.catchKeyword); | 768 addToken(node.catchKeyword); |
| 769 visit(node.formals); | 769 visit(node.formals); |
| 770 space(); | 770 space(); |
| 771 visit(node.block); | 771 visit(node.block); |
| 772 } | 772 } |
| 773 | 773 |
| 774 visitTypedef(Typedef node) { | 774 visitTypedef(Typedef node) { |
| 775 addToken(node.typedefKeyword); | 775 addToken(node.typedefKeyword); |
| 776 if (node.returnType != null) { | 776 if (node.returnType != null) { |
| 777 visit(node.returnType); | 777 visit(node.returnType); |
| 778 write(' '); | 778 write(' '); |
| 779 } | 779 } |
| 780 visit(node.name); | 780 visit(node.name); |
| 781 if (node.templateParameters != null) { | 781 if (node.templateParameters != null) { |
| 782 visit(node.templateParameters); | 782 visit(node.templateParameters); |
| 783 } | 783 } |
| 784 visit(node.formals); | 784 visit(node.formals); |
| 785 write(node.endToken.value); | 785 write(node.endToken.lexeme); |
| 786 } | 786 } |
| 787 | 787 |
| 788 visitLibraryName(LibraryName node) { | 788 visitLibraryName(LibraryName node) { |
| 789 addToken(node.libraryKeyword); | 789 addToken(node.libraryKeyword); |
| 790 node.visitChildren(this); | 790 node.visitChildren(this); |
| 791 write(node.getEndToken().value); | 791 write(node.getEndToken().lexeme); |
| 792 newline(); | 792 newline(); |
| 793 } | 793 } |
| 794 | 794 |
| 795 visitConditionalUri(ConditionalUri node) { | 795 visitConditionalUri(ConditionalUri node) { |
| 796 write(node.ifToken.value); | 796 write(node.ifToken.lexeme); |
| 797 space(); | 797 space(); |
| 798 write('('); | 798 write('('); |
| 799 visit(node.key); | 799 visit(node.key); |
| 800 if (node.value != null) { | 800 if (node.value != null) { |
| 801 space(); | 801 space(); |
| 802 write("=="); | 802 write("=="); |
| 803 space(); | 803 space(); |
| 804 visit(node.value); | 804 visit(node.value); |
| 805 } | 805 } |
| 806 write(")"); | 806 write(")"); |
| (...skipping 16 matching lines...) Expand all Loading... |
| 823 write(' deferred'); | 823 write(' deferred'); |
| 824 } | 824 } |
| 825 if (node.prefix != null) { | 825 if (node.prefix != null) { |
| 826 write(' as '); | 826 write(' as '); |
| 827 visit(node.prefix); | 827 visit(node.prefix); |
| 828 } | 828 } |
| 829 if (node.combinators != null) { | 829 if (node.combinators != null) { |
| 830 write(' '); | 830 write(' '); |
| 831 visit(node.combinators); | 831 visit(node.combinators); |
| 832 } | 832 } |
| 833 write(node.getEndToken().value); | 833 write(node.getEndToken().lexeme); |
| 834 newline(); | 834 newline(); |
| 835 } | 835 } |
| 836 | 836 |
| 837 visitExport(Export node) { | 837 visitExport(Export node) { |
| 838 addToken(node.exportKeyword); | 838 addToken(node.exportKeyword); |
| 839 visit(node.uri); | 839 visit(node.uri); |
| 840 if (node.hasConditionalUris) { | 840 if (node.hasConditionalUris) { |
| 841 write(' '); | 841 write(' '); |
| 842 visitNodeList(node.conditionalUris); | 842 visitNodeList(node.conditionalUris); |
| 843 } | 843 } |
| 844 if (node.combinators != null) { | 844 if (node.combinators != null) { |
| 845 write(' '); | 845 write(' '); |
| 846 visit(node.combinators); | 846 visit(node.combinators); |
| 847 } | 847 } |
| 848 write(node.getEndToken().value); | 848 write(node.getEndToken().lexeme); |
| 849 newline(); | 849 newline(); |
| 850 } | 850 } |
| 851 | 851 |
| 852 visitPart(Part node) { | 852 visitPart(Part node) { |
| 853 addToken(node.partKeyword); | 853 addToken(node.partKeyword); |
| 854 visit(node.uri); | 854 visit(node.uri); |
| 855 write(node.getEndToken().value); | 855 write(node.getEndToken().lexeme); |
| 856 } | 856 } |
| 857 | 857 |
| 858 visitPartOf(PartOf node) { | 858 visitPartOf(PartOf node) { |
| 859 addToken(node.partKeyword); | 859 addToken(node.partKeyword); |
| 860 addToken(node.ofKeyword); | 860 addToken(node.ofKeyword); |
| 861 visit(node.name); | 861 visit(node.name); |
| 862 write(node.getEndToken().value); | 862 write(node.getEndToken().lexeme); |
| 863 } | 863 } |
| 864 | 864 |
| 865 visitCombinator(Combinator node) { | 865 visitCombinator(Combinator node) { |
| 866 addToken(node.keywordToken); | 866 addToken(node.keywordToken); |
| 867 visit(node.identifiers); | 867 visit(node.identifiers); |
| 868 } | 868 } |
| 869 | 869 |
| 870 visitMetadata(Metadata node) { | 870 visitMetadata(Metadata node) { |
| 871 addToken(node.token); | 871 addToken(node.token); |
| 872 visit(node.expression); | 872 visit(node.expression); |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 909 } | 909 } |
| 910 | 910 |
| 911 visitStringNode(StringNode node) { | 911 visitStringNode(StringNode node) { |
| 912 throw 'internal error'; // Should not be called. | 912 throw 'internal error'; // Should not be called. |
| 913 } | 913 } |
| 914 | 914 |
| 915 visitTypeAnnotation(TypeAnnotation node) { | 915 visitTypeAnnotation(TypeAnnotation node) { |
| 916 throw 'internal error'; // Should not be called. | 916 throw 'internal error'; // Should not be called. |
| 917 } | 917 } |
| 918 } | 918 } |
| OLD | NEW |