File: preview.js

package info (click to toggle)
thunderbird 1%3A143.0.1-1
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 4,703,968 kB
  • sloc: cpp: 7,770,492; javascript: 5,943,842; ansic: 3,918,754; python: 1,418,263; xml: 653,354; asm: 474,045; java: 183,079; sh: 111,238; makefile: 20,410; perl: 14,359; objc: 13,059; yacc: 4,583; pascal: 3,405; lex: 1,720; ruby: 999; exp: 762; sql: 715; awk: 580; php: 436; lisp: 430; sed: 69; csh: 10
file content (133 lines) | stat: -rw-r--r-- 2,530 bytes parent folder | download | duplicates (10)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */

function empties() {
  const a = "";
  const b = false;
  const c = undefined;
  const d = null;
  debugger;
}

function smalls() {
  const a = "...";
  const b = true;
  const c = 1;
  const d = [];
  const e = {};
  debugger;
}

function objects() {
  const obj = {
    foo: 1,
  };

  const empty = Object.create(null);
  const foo = obj?.foo;

  debugger;
}

function largeArray() {
  const bs = [];
  for (let i = 0; i <= 100; i++) {
    bs.push({ a: 2, b: { c: 3 } });
  }
  debugger;
}

function classPreview() {
  class Foo {
    x = 1;
    #privateVar = 2;
    static #privateStatic = { first: "a", second: "b" };
    #privateMethod() {
      return this.#privateVar;
    }
    breakFn() {
      let i = this.x * this.#privateVar + Foo.#privateStatic;
      if (#privateVar in this && this.#privateVar !== 0) {
        i = i * 2;
      }
      const y = {
        hello: {
          foo: "foo",
           bar: "bar"
        },
      };
      y;
      debugger;
    }
  }
  const foo = new Foo();
  foo.breakFn();
}

function invalidTargets() {
  "a";
  false;
  undefined;
  null;
  42;
  const myVar = "foo";
  debugger;
  return myVar;
}

function multipleTokens() {
  var foo = {bar: { baz: "bloop"}}, blip = {boom: 0};
  foo || blip
  foo.bar;
  foo.bar.baz;
  foo || blip.boom;
  debugger;
}

function thisProperties() {
  new(class {
    constructor() {
      this.myProperty = {
        x: "this-myProperty-x",
        y: "this-myProperty-y",
        z: "this-myProperty-z",
      };
      this.myProperty.x;
      const propertyName = "myProperty";
      this[propertyName].y;
      this?.[propertyName].z;
      debugger;
    }
  });
}

function valueOfExpression() {
  function a(value) {
    b(value).catch(console.error);
    debugger;
  };

  function b() {
    return new Promise(() => {});
  }

  a("foo")
}

const workers = [];
let worker = null;
// This is scenario is used to test `editor.getInScopeLines`
function spawnWorker() {
  worker = new Worker("worker.js?id=123");
  workers.push(worker);
  // Asserts that `worker` token on line 126 is detected as part of the outer scope
  // so tooltip previews should be displayed for it.
  worker.onmessage = function (e) {
    console.log("Message received in main script, from ", e);
  };

  worker.onerror = function (e) {
    debugger;
  };
}