Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(14)

Side by Side Diff: third_party/WebKit/Source/devtools/front_end/cm/javascript.js

Issue 2166603002: DevTools: roll CodeMirror (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Revert unnecessary typeIn change Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // CodeMirror, copyright (c) by Marijn Haverbeke and others 1 // CodeMirror, copyright (c) by Marijn Haverbeke and others
2 // Distributed under an MIT license: http://codemirror.net/LICENSE 2 // Distributed under an MIT license: http://codemirror.net/LICENSE
3 3
4 // TODO actually recognize syntax of TypeScript constructs 4 // TODO actually recognize syntax of TypeScript constructs
5 5
6 (function(mod) { 6 (function(mod) {
7 if (typeof exports == "object" && typeof module == "object") // CommonJS 7 if (typeof exports == "object" && typeof module == "object") // CommonJS
8 mod(require("../../lib/codemirror")); 8 mod(require("../../lib/codemirror"));
9 else if (typeof define == "function" && define.amd) // AMD 9 else if (typeof define == "function" && define.amd) // AMD
10 define(["../../lib/codemirror"], mod); 10 define(["../../lib/codemirror"], mod);
(...skipping 24 matching lines...) Expand all
35 35
36 var jsKeywords = { 36 var jsKeywords = {
37 "if": kw("if"), "while": A, "with": A, "else": B, "do": B, "try": B, "fina lly": B, 37 "if": kw("if"), "while": A, "with": A, "else": B, "do": B, "try": B, "fina lly": B,
38 "return": C, "break": C, "continue": C, "new": kw("new"), "delete": C, "th row": C, "debugger": C, 38 "return": C, "break": C, "continue": C, "new": kw("new"), "delete": C, "th row": C, "debugger": C,
39 "var": kw("var"), "const": kw("var"), "let": kw("var"), 39 "var": kw("var"), "const": kw("var"), "let": kw("var"),
40 "function": kw("function"), "catch": kw("catch"), 40 "function": kw("function"), "catch": kw("catch"),
41 "for": kw("for"), "switch": kw("switch"), "case": kw("case"), "default": k w("default"), 41 "for": kw("for"), "switch": kw("switch"), "case": kw("case"), "default": k w("default"),
42 "in": operator, "typeof": operator, "instanceof": operator, 42 "in": operator, "typeof": operator, "instanceof": operator,
43 "true": atom, "false": atom, "null": atom, "undefined": atom, "NaN": atom, "Infinity": atom, 43 "true": atom, "false": atom, "null": atom, "undefined": atom, "NaN": atom, "Infinity": atom,
44 "this": kw("this"), "class": kw("class"), "super": kw("atom"), 44 "this": kw("this"), "class": kw("class"), "super": kw("atom"),
45 "yield": C, "export": kw("export"), "import": kw("import"), "extends": C 45 "yield": C, "export": kw("export"), "import": kw("import"), "extends": C,
46 "await": C, "async": kw("async")
46 }; 47 };
47 48
48 // Extend the 'normal' keywords with the TypeScript language extensions 49 // Extend the 'normal' keywords with the TypeScript language extensions
49 if (isTS) { 50 if (isTS) {
50 var type = {type: "variable", style: "variable-3"}; 51 var type = {type: "variable", style: "variable-3"};
51 var tsKeywords = { 52 var tsKeywords = {
52 // object-like things 53 // object-like things
53 "interface": kw("class"), 54 "interface": kw("class"),
54 "implements": C, 55 "implements": C,
55 "namespace": C, 56 "namespace": C,
(...skipping 303 matching lines...) Expand 10 before | Expand all | Expand 10 after
359 if (type == "switch") return cont(pushlex("form"), expression, pushlex("}", "switch"), expect("{"), 360 if (type == "switch") return cont(pushlex("form"), expression, pushlex("}", "switch"), expect("{"),
360 block, poplex, poplex); 361 block, poplex, poplex);
361 if (type == "case") return cont(expression, expect(":")); 362 if (type == "case") return cont(expression, expect(":"));
362 if (type == "default") return cont(expect(":")); 363 if (type == "default") return cont(expect(":"));
363 if (type == "catch") return cont(pushlex("form"), pushcontext, expect("("), funarg, expect(")"), 364 if (type == "catch") return cont(pushlex("form"), pushcontext, expect("("), funarg, expect(")"),
364 statement, poplex, popcontext); 365 statement, poplex, popcontext);
365 if (type == "class") return cont(pushlex("form"), className, poplex); 366 if (type == "class") return cont(pushlex("form"), className, poplex);
366 if (type == "export") return cont(pushlex("stat"), afterExport, poplex); 367 if (type == "export") return cont(pushlex("stat"), afterExport, poplex);
367 if (type == "import") return cont(pushlex("stat"), afterImport, poplex); 368 if (type == "import") return cont(pushlex("stat"), afterImport, poplex);
368 if (type == "module") return cont(pushlex("form"), pattern, pushlex("}"), ex pect("{"), block, poplex, poplex) 369 if (type == "module") return cont(pushlex("form"), pattern, pushlex("}"), ex pect("{"), block, poplex, poplex)
370 if (type == "async") return cont(statement)
369 return pass(pushlex("stat"), expression, expect(";"), poplex); 371 return pass(pushlex("stat"), expression, expect(";"), poplex);
370 } 372 }
371 function expression(type) { 373 function expression(type) {
372 return expressionInner(type, false); 374 return expressionInner(type, false);
373 } 375 }
374 function expressionNoComma(type) { 376 function expressionNoComma(type) {
375 return expressionInner(type, true); 377 return expressionInner(type, true);
376 } 378 }
377 function expressionInner(type, noComma) { 379 function expressionInner(type, noComma) {
378 if (cx.state.fatArrowAt == cx.stream.start) { 380 if (cx.state.fatArrowAt == cx.stream.start) {
379 var body = noComma ? arrowBodyNoComma : arrowBody; 381 var body = noComma ? arrowBodyNoComma : arrowBody;
380 if (type == "(") return cont(pushcontext, pushlex(")"), commasep(pattern, ")"), poplex, expect("=>"), body, popcontext); 382 if (type == "(") return cont(pushcontext, pushlex(")"), commasep(pattern, ")"), poplex, expect("=>"), body, popcontext);
381 else if (type == "variable") return pass(pushcontext, pattern, expect("=>" ), body, popcontext); 383 else if (type == "variable") return pass(pushcontext, pattern, expect("=>" ), body, popcontext);
382 } 384 }
383 385
384 var maybeop = noComma ? maybeoperatorNoComma : maybeoperatorComma; 386 var maybeop = noComma ? maybeoperatorNoComma : maybeoperatorComma;
385 if (atomicTypes.hasOwnProperty(type)) return cont(maybeop); 387 if (atomicTypes.hasOwnProperty(type)) return cont(maybeop);
386 if (type == "function") return cont(functiondef, maybeop); 388 if (type == "function") return cont(functiondef, maybeop);
387 if (type == "keyword c") return cont(noComma ? maybeexpressionNoComma : mayb eexpression); 389 if (type == "keyword c" || type == "async") return cont(noComma ? maybeexpre ssionNoComma : maybeexpression);
388 if (type == "(") return cont(pushlex(")"), maybeexpression, comprehension, e xpect(")"), poplex, maybeop); 390 if (type == "(") return cont(pushlex(")"), maybeexpression, expect(")"), pop lex, maybeop);
389 if (type == "operator" || type == "spread") return cont(noComma ? expression NoComma : expression); 391 if (type == "operator" || type == "spread") return cont(noComma ? expression NoComma : expression);
390 if (type == "[") return cont(pushlex("]"), arrayLiteral, poplex, maybeop); 392 if (type == "[") return cont(pushlex("]"), arrayLiteral, poplex, maybeop);
391 if (type == "{") return contCommasep(objprop, "}", null, maybeop); 393 if (type == "{") return contCommasep(objprop, "}", null, maybeop);
392 if (type == "quasi") return pass(quasi, maybeop); 394 if (type == "quasi") return pass(quasi, maybeop);
393 if (type == "new") return cont(maybeTarget(noComma)); 395 if (type == "new") return cont(maybeTarget(noComma));
394 return cont(); 396 return cont();
395 } 397 }
396 function maybeexpression(type) { 398 function maybeexpression(type) {
397 if (type.match(/[;\}\)\],]/)) return pass(); 399 if (type.match(/[;\}\)\],]/)) return pass();
398 return pass(expression); 400 return pass(expression);
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
454 if (value == "target") { cx.marked = "keyword"; return cont(maybeoperatorNoC omma); } 456 if (value == "target") { cx.marked = "keyword"; return cont(maybeoperatorNoC omma); }
455 } 457 }
456 function maybelabel(type) { 458 function maybelabel(type) {
457 if (type == ":") return cont(poplex, statement); 459 if (type == ":") return cont(poplex, statement);
458 return pass(maybeoperatorComma, expect(";"), poplex); 460 return pass(maybeoperatorComma, expect(";"), poplex);
459 } 461 }
460 function property(type) { 462 function property(type) {
461 if (type == "variable") {cx.marked = "property"; return cont();} 463 if (type == "variable") {cx.marked = "property"; return cont();}
462 } 464 }
463 function objprop(type, value) { 465 function objprop(type, value) {
466 if (type == "async") return cont(objprop);
464 if (type == "variable" || cx.style == "keyword") { 467 if (type == "variable" || cx.style == "keyword") {
465 cx.marked = "property"; 468 cx.marked = "property";
466 if (value == "get" || value == "set") return cont(getterSetter); 469 if (value == "get" || value == "set") return cont(getterSetter);
467 return cont(afterprop); 470 return cont(afterprop);
468 } else if (type == "number" || type == "string") { 471 } else if (type == "number" || type == "string") {
469 cx.marked = jsonldMode ? "property" : (cx.style + " property"); 472 cx.marked = jsonldMode ? "property" : (cx.style + " property");
470 return cont(afterprop); 473 return cont(afterprop);
471 } else if (type == "jsonld-keyword") { 474 } else if (type == "jsonld-keyword") {
472 return cont(afterprop); 475 return cont(afterprop);
473 } else if (type == "modifier") { 476 } else if (type == "modifier") {
474 return cont(objprop) 477 return cont(objprop)
475 } else if (type == "[") { 478 } else if (type == "[") {
476 return cont(expression, expect("]"), afterprop); 479 return cont(expression, expect("]"), afterprop);
477 } else if (type == "spread") { 480 } else if (type == "spread") {
478 return cont(expression); 481 return cont(expression);
479 } 482 }
480 } 483 }
481 function getterSetter(type) { 484 function getterSetter(type) {
482 if (type != "variable") return pass(afterprop); 485 if (type != "variable") return pass(afterprop);
483 cx.marked = "property"; 486 cx.marked = "property";
484 return cont(functiondef); 487 return cont(functiondef);
485 } 488 }
486 function afterprop(type) { 489 function afterprop(type) {
487 if (type == ":") return cont(expressionNoComma); 490 if (type == ":") return cont(expressionNoComma);
488 if (type == "(") return pass(functiondef); 491 if (type == "(") return pass(functiondef);
489 } 492 }
490 function commasep(what, end) { 493 function commasep(what, end) {
491 function proceed(type) { 494 function proceed(type, value) {
492 if (type == ",") { 495 if (type == ",") {
493 var lex = cx.state.lexical; 496 var lex = cx.state.lexical;
494 if (lex.info == "call") lex.pos = (lex.pos || 0) + 1; 497 if (lex.info == "call") lex.pos = (lex.pos || 0) + 1;
495 return cont(what, proceed); 498 return cont(function(type, value) {
499 if (type == end || value == end) return pass()
500 return pass(what)
501 }, proceed);
496 } 502 }
497 if (type == end) return cont(); 503 if (type == end || value == end) return cont();
498 return cont(expect(end)); 504 return cont(expect(end));
499 } 505 }
500 return function(type) { 506 return function(type, value) {
501 if (type == end) return cont(); 507 if (type == end || value == end) return cont();
502 return pass(what, proceed); 508 return pass(what, proceed);
503 }; 509 };
504 } 510 }
505 function contCommasep(what, end, info) { 511 function contCommasep(what, end, info) {
506 for (var i = 3; i < arguments.length; i++) 512 for (var i = 3; i < arguments.length; i++)
507 cx.cc.push(arguments[i]); 513 cx.cc.push(arguments[i]);
508 return cont(pushlex(end, info), commasep(what, end), poplex); 514 return cont(pushlex(end, info), commasep(what, end), poplex);
509 } 515 }
510 function block(type) { 516 function block(type) {
511 if (type == "}") return cont(); 517 if (type == "}") return cont();
512 return pass(statement, block); 518 return pass(statement, block);
513 } 519 }
514 function maybetype(type) { 520 function maybetype(type) {
515 if (isTS && type == ":") return cont(typedef); 521 if (isTS && type == ":") return cont(typeexpr);
516 } 522 }
517 function maybedefault(_, value) { 523 function maybedefault(_, value) {
518 if (value == "=") return cont(expressionNoComma); 524 if (value == "=") return cont(expressionNoComma);
519 } 525 }
520 function typedef(type) { 526 function typeexpr(type) {
521 if (type == "variable") {cx.marked = "variable-3"; return cont();} 527 if (type == "variable") {cx.marked = "variable-3"; return cont(afterType);}
528 }
529 function afterType(type, value) {
530 if (value == "<") return cont(commasep(typeexpr, ">"), afterType)
531 if (type == "[") return cont(expect("]"), afterType)
522 } 532 }
523 function vardef() { 533 function vardef() {
524 return pass(pattern, maybetype, maybeAssign, vardefCont); 534 return pass(pattern, maybetype, maybeAssign, vardefCont);
525 } 535 }
526 function pattern(type, value) { 536 function pattern(type, value) {
527 if (type == "modifier") return cont(pattern) 537 if (type == "modifier") return cont(pattern)
528 if (type == "variable") { register(value); return cont(); } 538 if (type == "variable") { register(value); return cont(); }
529 if (type == "spread") return cont(pattern); 539 if (type == "spread") return cont(pattern);
530 if (type == "[") return contCommasep(pattern, "]"); 540 if (type == "[") return contCommasep(pattern, "]");
531 if (type == "{") return contCommasep(proppattern, "}"); 541 if (type == "{") return contCommasep(proppattern, "}");
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
566 if (type == ";") return cont(forspec3); 576 if (type == ";") return cont(forspec3);
567 if (value == "in" || value == "of") { cx.marked = "keyword"; return cont(exp ression); } 577 if (value == "in" || value == "of") { cx.marked = "keyword"; return cont(exp ression); }
568 return pass(expression, expect(";"), forspec3); 578 return pass(expression, expect(";"), forspec3);
569 } 579 }
570 function forspec3(type) { 580 function forspec3(type) {
571 if (type != ")") cont(expression); 581 if (type != ")") cont(expression);
572 } 582 }
573 function functiondef(type, value) { 583 function functiondef(type, value) {
574 if (value == "*") {cx.marked = "keyword"; return cont(functiondef);} 584 if (value == "*") {cx.marked = "keyword"; return cont(functiondef);}
575 if (type == "variable") {register(value); return cont(functiondef);} 585 if (type == "variable") {register(value); return cont(functiondef);}
576 if (type == "(") return cont(pushcontext, pushlex(")"), commasep(funarg, ")" ), poplex, statement, popcontext); 586 if (type == "(") return cont(pushcontext, pushlex(")"), commasep(funarg, ")" ), poplex, maybetype, statement, popcontext);
577 } 587 }
578 function funarg(type) { 588 function funarg(type) {
579 if (type == "spread") return cont(funarg); 589 if (type == "spread") return cont(funarg);
580 return pass(pattern, maybetype, maybedefault); 590 return pass(pattern, maybetype, maybedefault);
581 } 591 }
582 function className(type, value) { 592 function className(type, value) {
583 if (type == "variable") {register(value); return cont(classNameAfter);} 593 if (type == "variable") {register(value); return cont(classNameAfter);}
584 } 594 }
585 function classNameAfter(type, value) { 595 function classNameAfter(type, value) {
586 if (value == "extends") return cont(expression, classNameAfter); 596 if (value == "extends") return cont(expression, classNameAfter);
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
624 return cont(maybeAs); 634 return cont(maybeAs);
625 } 635 }
626 function maybeAs(_type, value) { 636 function maybeAs(_type, value) {
627 if (value == "as") { cx.marked = "keyword"; return cont(importSpec); } 637 if (value == "as") { cx.marked = "keyword"; return cont(importSpec); }
628 } 638 }
629 function maybeFrom(_type, value) { 639 function maybeFrom(_type, value) {
630 if (value == "from") { cx.marked = "keyword"; return cont(expression); } 640 if (value == "from") { cx.marked = "keyword"; return cont(expression); }
631 } 641 }
632 function arrayLiteral(type) { 642 function arrayLiteral(type) {
633 if (type == "]") return cont(); 643 if (type == "]") return cont();
634 return pass(expressionNoComma, maybeArrayComprehension); 644 return pass(expressionNoComma, commasep(expressionNoComma, "]"));
635 }
636 function maybeArrayComprehension(type) {
637 if (type == "for") return pass(comprehension, expect("]"));
638 if (type == ",") return cont(commasep(maybeexpressionNoComma, "]"));
639 return pass(commasep(expressionNoComma, "]"));
640 }
641 function comprehension(type) {
642 if (type == "for") return cont(forspec, comprehension);
643 if (type == "if") return cont(expression, comprehension);
644 } 645 }
645 646
646 function isContinuedStatement(state, textAfter) { 647 function isContinuedStatement(state, textAfter) {
647 return state.lastType == "operator" || state.lastType == "," || 648 return state.lastType == "operator" || state.lastType == "," ||
648 isOperatorChar.test(textAfter.charAt(0)) || 649 isOperatorChar.test(textAfter.charAt(0)) ||
649 /[,.]/.test(textAfter.charAt(0)); 650 /[,.]/.test(textAfter.charAt(0));
650 } 651 }
651 652
652 // Interface 653 // Interface
653 654
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
733 CodeMirror.defineMIME("application/javascript", "javascript"); 734 CodeMirror.defineMIME("application/javascript", "javascript");
734 CodeMirror.defineMIME("application/x-javascript", "javascript"); 735 CodeMirror.defineMIME("application/x-javascript", "javascript");
735 CodeMirror.defineMIME("application/ecmascript", "javascript"); 736 CodeMirror.defineMIME("application/ecmascript", "javascript");
736 CodeMirror.defineMIME("application/json", {name: "javascript", json: true}); 737 CodeMirror.defineMIME("application/json", {name: "javascript", json: true});
737 CodeMirror.defineMIME("application/x-json", {name: "javascript", json: true}); 738 CodeMirror.defineMIME("application/x-json", {name: "javascript", json: true});
738 CodeMirror.defineMIME("application/ld+json", {name: "javascript", jsonld: true}) ; 739 CodeMirror.defineMIME("application/ld+json", {name: "javascript", jsonld: true}) ;
739 CodeMirror.defineMIME("text/typescript", { name: "javascript", typescript: true }); 740 CodeMirror.defineMIME("text/typescript", { name: "javascript", typescript: true });
740 CodeMirror.defineMIME("application/typescript", { name: "javascript", typescript : true }); 741 CodeMirror.defineMIME("application/typescript", { name: "javascript", typescript : true });
741 742
742 }); 743 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698