@alloy-js/python 0.5.0-dev.1 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (217) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/dev/src/components/CallSignature.js +2 -2
  3. package/dist/dev/src/components/CallSignature.js.map +1 -1
  4. package/dist/dev/src/components/ConstructorDeclaration.js +1 -1
  5. package/dist/dev/src/components/ConstructorDeclaration.js.map +1 -1
  6. package/dist/dev/src/components/DataclassDeclaration.js +5 -5
  7. package/dist/dev/src/components/DataclassDeclaration.js.map +1 -1
  8. package/dist/dev/src/components/FunctionBase.js +9 -9
  9. package/dist/dev/src/components/FunctionBase.js.map +1 -1
  10. package/dist/dev/src/components/PropertyDeclaration.js +8 -8
  11. package/dist/dev/src/components/PropertyDeclaration.js.map +1 -1
  12. package/dist/dev/src/components/PyDoc.js +64 -64
  13. package/dist/dev/src/components/PyDoc.js.map +1 -1
  14. package/dist/dev/src/components/PydanticClassDeclaration.js +5 -5
  15. package/dist/dev/src/components/PydanticClassDeclaration.js.map +1 -1
  16. package/dist/dev/src/components/SourceFile.js +44 -32
  17. package/dist/dev/src/components/SourceFile.js.map +1 -1
  18. package/dist/dev/src/symbols/python-output-symbol.js.map +1 -1
  19. package/dist/dev/test/callsignatures.test.js +471 -297
  20. package/dist/dev/test/callsignatures.test.js.map +1 -1
  21. package/dist/dev/test/class-method-declaration.test.js +21 -10
  22. package/dist/dev/test/class-method-declaration.test.js.map +1 -1
  23. package/dist/dev/test/classdeclarations.test.js +459 -393
  24. package/dist/dev/test/classdeclarations.test.js.map +1 -1
  25. package/dist/dev/test/classinstantiations.test.js +201 -168
  26. package/dist/dev/test/classinstantiations.test.js.map +1 -1
  27. package/dist/dev/test/constructordeclaration.test.js +22 -11
  28. package/dist/dev/test/constructordeclaration.test.js.map +1 -1
  29. package/dist/dev/test/dataclassdeclarations.test.js +322 -368
  30. package/dist/dev/test/dataclassdeclarations.test.js.map +1 -1
  31. package/dist/dev/test/decoratorlist.test.js +96 -49
  32. package/dist/dev/test/decoratorlist.test.js.map +1 -1
  33. package/dist/dev/test/dundermethoddeclaration.test.js +22 -11
  34. package/dist/dev/test/dundermethoddeclaration.test.js.map +1 -1
  35. package/dist/dev/test/enums.test.js +218 -184
  36. package/dist/dev/test/enums.test.js.map +1 -1
  37. package/dist/dev/test/externals.test.js +57 -45
  38. package/dist/dev/test/externals.test.js.map +1 -1
  39. package/dist/dev/test/factories.test.js +124 -50
  40. package/dist/dev/test/factories.test.js.map +1 -1
  41. package/dist/dev/test/functioncallexpressions.test.js +199 -164
  42. package/dist/dev/test/functioncallexpressions.test.js.map +1 -1
  43. package/dist/dev/test/functiondeclaration.test.js +439 -272
  44. package/dist/dev/test/functiondeclaration.test.js.map +1 -1
  45. package/dist/dev/test/imports.test.js +273 -221
  46. package/dist/dev/test/imports.test.js.map +1 -1
  47. package/dist/dev/test/memberexpressions.test.js +1237 -972
  48. package/dist/dev/test/memberexpressions.test.js.map +1 -1
  49. package/dist/dev/test/methoddeclaration.test.js +142 -78
  50. package/dist/dev/test/methoddeclaration.test.js.map +1 -1
  51. package/dist/dev/test/namepolicies.test.js +130 -94
  52. package/dist/dev/test/namepolicies.test.js.map +1 -1
  53. package/dist/dev/test/propertydeclaration.test.js +88 -59
  54. package/dist/dev/test/propertydeclaration.test.js.map +1 -1
  55. package/dist/dev/test/pydanticclassdeclarations.test.js +299 -347
  56. package/dist/dev/test/pydanticclassdeclarations.test.js.map +1 -1
  57. package/dist/dev/test/pydocs.test.js +888 -715
  58. package/dist/dev/test/pydocs.test.js.map +1 -1
  59. package/dist/dev/test/references.test.js +42 -35
  60. package/dist/dev/test/references.test.js.map +1 -1
  61. package/dist/dev/test/sourcefiles.test.js +1109 -841
  62. package/dist/dev/test/sourcefiles.test.js.map +1 -1
  63. package/dist/dev/test/staticmethoddeclaration.test.js +21 -10
  64. package/dist/dev/test/staticmethoddeclaration.test.js.map +1 -1
  65. package/dist/dev/test/type-checking-imports.test.js +408 -359
  66. package/dist/dev/test/type-checking-imports.test.js.map +1 -1
  67. package/dist/dev/test/typereference.test.js +55 -40
  68. package/dist/dev/test/typereference.test.js.map +1 -1
  69. package/dist/dev/test/uniontypeexpression.test.js +222 -146
  70. package/dist/dev/test/uniontypeexpression.test.js.map +1 -1
  71. package/dist/dev/test/utils.js +39 -77
  72. package/dist/dev/test/utils.js.map +1 -1
  73. package/dist/dev/test/values.test.js +237 -101
  74. package/dist/dev/test/values.test.js.map +1 -1
  75. package/dist/dev/test/variables.test.js +321 -203
  76. package/dist/dev/test/variables.test.js.map +1 -1
  77. package/dist/dev/test/vitest.setup.js +2 -0
  78. package/dist/dev/test/vitest.setup.js.map +1 -0
  79. package/dist/src/components/CallSignature.d.ts.map +1 -1
  80. package/dist/src/components/CallSignature.js.map +1 -1
  81. package/dist/src/components/ConstructorDeclaration.d.ts.map +1 -1
  82. package/dist/src/components/ConstructorDeclaration.js.map +1 -1
  83. package/dist/src/components/DataclassDeclaration.d.ts.map +1 -1
  84. package/dist/src/components/DataclassDeclaration.js.map +1 -1
  85. package/dist/src/components/FunctionBase.d.ts.map +1 -1
  86. package/dist/src/components/FunctionBase.js.map +1 -1
  87. package/dist/src/components/PropertyDeclaration.d.ts.map +1 -1
  88. package/dist/src/components/PropertyDeclaration.js.map +1 -1
  89. package/dist/src/components/PyDoc.d.ts.map +1 -1
  90. package/dist/src/components/PyDoc.js.map +1 -1
  91. package/dist/src/components/PydanticClassDeclaration.d.ts.map +1 -1
  92. package/dist/src/components/PydanticClassDeclaration.js.map +1 -1
  93. package/dist/src/components/SourceFile.d.ts +2 -2
  94. package/dist/src/components/SourceFile.d.ts.map +1 -1
  95. package/dist/src/components/SourceFile.js +12 -0
  96. package/dist/src/components/SourceFile.js.map +1 -1
  97. package/dist/src/symbols/python-output-symbol.d.ts.map +1 -1
  98. package/dist/src/symbols/python-output-symbol.js.map +1 -1
  99. package/dist/test/callsignatures.test.js +346 -272
  100. package/dist/test/callsignatures.test.js.map +1 -1
  101. package/dist/test/class-method-declaration.test.js +7 -4
  102. package/dist/test/class-method-declaration.test.js.map +1 -1
  103. package/dist/test/classdeclarations.test.js +302 -288
  104. package/dist/test/classdeclarations.test.js.map +1 -1
  105. package/dist/test/classinstantiations.test.js +112 -103
  106. package/dist/test/classinstantiations.test.js.map +1 -1
  107. package/dist/test/constructordeclaration.test.js +7 -4
  108. package/dist/test/constructordeclaration.test.js.map +1 -1
  109. package/dist/test/dataclassdeclarations.test.js +134 -184
  110. package/dist/test/dataclassdeclarations.test.js.map +1 -1
  111. package/dist/test/decoratorlist.test.js +59 -36
  112. package/dist/test/decoratorlist.test.js.map +1 -1
  113. package/dist/test/dundermethoddeclaration.test.js +7 -4
  114. package/dist/test/dundermethoddeclaration.test.js.map +1 -1
  115. package/dist/test/enums.test.js +161 -159
  116. package/dist/test/enums.test.js.map +1 -1
  117. package/dist/test/externals.test.js +24 -24
  118. package/dist/test/externals.test.js.map +1 -1
  119. package/dist/test/factories.test.js +75 -33
  120. package/dist/test/factories.test.js.map +1 -1
  121. package/dist/test/functioncallexpressions.test.js +117 -106
  122. package/dist/test/functioncallexpressions.test.js.map +1 -1
  123. package/dist/test/functiondeclaration.test.js +247 -180
  124. package/dist/test/functiondeclaration.test.js.map +1 -1
  125. package/dist/test/imports.test.js +171 -143
  126. package/dist/test/imports.test.js.map +1 -1
  127. package/dist/test/memberexpressions.test.js +582 -453
  128. package/dist/test/memberexpressions.test.js.map +1 -1
  129. package/dist/test/methoddeclaration.test.js +66 -46
  130. package/dist/test/methoddeclaration.test.js.map +1 -1
  131. package/dist/test/namepolicies.test.js +90 -78
  132. package/dist/test/namepolicies.test.js.map +1 -1
  133. package/dist/test/propertydeclaration.test.js +25 -20
  134. package/dist/test/propertydeclaration.test.js.map +1 -1
  135. package/dist/test/pydanticclassdeclarations.test.js +134 -190
  136. package/dist/test/pydanticclassdeclarations.test.js.map +1 -1
  137. package/dist/test/pydocs.test.js +573 -532
  138. package/dist/test/pydocs.test.js.map +1 -1
  139. package/dist/test/references.test.js +31 -28
  140. package/dist/test/references.test.js.map +1 -1
  141. package/dist/test/sourcefiles.test.js +700 -580
  142. package/dist/test/sourcefiles.test.js.map +1 -1
  143. package/dist/test/staticmethoddeclaration.test.js +7 -4
  144. package/dist/test/staticmethoddeclaration.test.js.map +1 -1
  145. package/dist/test/type-checking-imports.test.js +297 -284
  146. package/dist/test/type-checking-imports.test.js.map +1 -1
  147. package/dist/test/typereference.test.js +29 -22
  148. package/dist/test/typereference.test.js.map +1 -1
  149. package/dist/test/uniontypeexpression.test.js +124 -88
  150. package/dist/test/uniontypeexpression.test.js.map +1 -1
  151. package/dist/test/utils.d.ts +10 -17
  152. package/dist/test/utils.d.ts.map +1 -1
  153. package/dist/test/utils.js +32 -74
  154. package/dist/test/utils.js.map +1 -1
  155. package/dist/test/values.test.js +135 -67
  156. package/dist/test/values.test.js.map +1 -1
  157. package/dist/test/variables.test.js +201 -151
  158. package/dist/test/variables.test.js.map +1 -1
  159. package/dist/test/vitest.setup.d.ts +2 -0
  160. package/dist/test/vitest.setup.d.ts.map +1 -0
  161. package/dist/test/vitest.setup.js +2 -0
  162. package/dist/test/vitest.setup.js.map +1 -0
  163. package/dist/tsconfig.tsbuildinfo +1 -1
  164. package/docs/api/components/FunctionalEnumDeclaration.md +3 -6
  165. package/docs/api/components/MemberExpression.md +1 -5
  166. package/docs/api/components/SourceFile.md +20 -8
  167. package/docs/api/components/index.md +0 -2
  168. package/docs/api/functions/isTypeRefContext.md +1 -1
  169. package/docs/api/index.md +2 -2
  170. package/docs/api/types/ReferenceProps.md +7 -0
  171. package/docs/api/types/TypeRefContextProps.md +7 -0
  172. package/docs/api/types/index.md +2 -0
  173. package/package.json +11 -10
  174. package/src/components/CallSignature.tsx +4 -2
  175. package/src/components/ConstructorDeclaration.tsx +4 -2
  176. package/src/components/DataclassDeclaration.tsx +1 -2
  177. package/src/components/FunctionBase.tsx +1 -2
  178. package/src/components/PropertyDeclaration.tsx +8 -4
  179. package/src/components/PyDoc.tsx +12 -6
  180. package/src/components/PydanticClassDeclaration.tsx +1 -2
  181. package/src/components/SourceFile.tsx +6 -1
  182. package/src/symbols/python-output-symbol.ts +1 -2
  183. package/temp/api.json +107 -61
  184. package/test/callsignatures.test.tsx +309 -283
  185. package/test/class-method-declaration.test.tsx +3 -4
  186. package/test/classdeclarations.test.tsx +263 -248
  187. package/test/classinstantiations.test.tsx +115 -109
  188. package/test/constructordeclaration.test.tsx +9 -6
  189. package/test/dataclassdeclarations.test.tsx +243 -361
  190. package/test/decoratorlist.test.tsx +78 -59
  191. package/test/dundermethoddeclaration.test.tsx +3 -4
  192. package/test/enums.test.tsx +65 -81
  193. package/test/externals.test.tsx +25 -25
  194. package/test/factories.test.tsx +64 -22
  195. package/test/functioncallexpressions.test.tsx +123 -109
  196. package/test/functiondeclaration.test.tsx +209 -148
  197. package/test/imports.test.tsx +119 -91
  198. package/test/memberexpressions.test.tsx +265 -207
  199. package/test/methoddeclaration.test.tsx +84 -63
  200. package/test/namepolicies.test.tsx +69 -69
  201. package/test/propertydeclaration.test.tsx +7 -8
  202. package/test/pydanticclassdeclarations.test.tsx +355 -487
  203. package/test/pydocs.test.tsx +531 -579
  204. package/test/references.test.tsx +24 -23
  205. package/test/sourcefiles.test.tsx +527 -492
  206. package/test/staticmethoddeclaration.test.tsx +3 -4
  207. package/test/type-checking-imports.test.tsx +206 -218
  208. package/test/typereference.test.tsx +15 -12
  209. package/test/uniontypeexpression.test.tsx +74 -61
  210. package/test/utils.tsx +26 -110
  211. package/test/values.test.tsx +82 -32
  212. package/test/variables.test.tsx +162 -142
  213. package/test/vitest.setup.ts +1 -0
  214. package/tsdoc-metadata.json +1 -1
  215. package/vitest.config.ts +4 -0
  216. package/docs/api/components/Reference.md +0 -31
  217. package/docs/api/components/TypeRefContext.md +0 -41
@@ -1,237 +1,284 @@
1
1
  import { createComponent as _$createComponent, memo as _$memo, createIntrinsic as _$createIntrinsic } from "@alloy-js/core/jsx-runtime";
2
- import { code, memberRefkey, refkey } from "@alloy-js/core";
3
- import { d } from "@alloy-js/core/testing";
2
+ import { code, memberRefkey, refkey, render } from "@alloy-js/core";
4
3
  import { describe, expect, it } from "vitest";
5
4
  import * as py from "../src/index.js";
6
5
  import { ClassDeclaration, FunctionDeclaration, SourceFile, VariableDeclaration } from "../src/index.js";
7
- import { assertFileContents, toSourceText, toSourceTextMultiple } from "./utils.js";
6
+ import { TestOutput, TestOutputDirectory } from "./utils.js";
8
7
  it("renders basic member expression with dot notation", () => {
9
- expect(toSourceText([_$createComponent(py.MemberExpression, {
8
+ expect(_$createComponent(TestOutput, {
10
9
  get children() {
11
- return [_$createComponent(py.MemberExpression.Part, {
12
- id: "obj"
13
- }, {
14
- fileName: import.meta.url,
15
- lineNumber: 22,
16
- columnNumber: 9
17
- }), _$createComponent(py.MemberExpression.Part, {
18
- id: "property"
10
+ return _$createComponent(py.MemberExpression, {
11
+ get children() {
12
+ return [_$createComponent(py.MemberExpression.Part, {
13
+ id: "obj"
14
+ }, {
15
+ fileName: import.meta.url,
16
+ lineNumber: 17,
17
+ columnNumber: 9
18
+ }), _$createComponent(py.MemberExpression.Part, {
19
+ id: "property"
20
+ }, {
21
+ fileName: import.meta.url,
22
+ lineNumber: 18,
23
+ columnNumber: 9
24
+ })];
25
+ }
19
26
  }, {
20
27
  fileName: import.meta.url,
21
- lineNumber: 23,
22
- columnNumber: 9
23
- })];
28
+ lineNumber: 16,
29
+ columnNumber: 7
30
+ });
24
31
  }
25
32
  }, {
26
33
  fileName: import.meta.url,
27
- lineNumber: 21,
28
- columnNumber: 7
29
- })])).toBe(d`
34
+ lineNumber: 15,
35
+ columnNumber: 5
36
+ })).toRenderTo(`
30
37
  obj.property
31
38
  `);
32
39
  });
33
40
  it("renders basic member expression with key", () => {
34
- expect(toSourceText([_$createComponent(py.MemberExpression, {
41
+ expect(_$createComponent(TestOutput, {
35
42
  get children() {
36
- return [_$createComponent(py.MemberExpression.Part, {
37
- id: "arr"
38
- }, {
39
- fileName: import.meta.url,
40
- lineNumber: 35,
41
- columnNumber: 9
42
- }), _$createComponent(py.MemberExpression.Part, {
43
- key: 12345
44
- }, {
45
- fileName: import.meta.url,
46
- lineNumber: 36,
47
- columnNumber: 9
48
- }), _$createComponent(py.MemberExpression.Part, {
49
- id: "foo-bar"
43
+ return _$createComponent(py.MemberExpression, {
44
+ get children() {
45
+ return [_$createComponent(py.MemberExpression.Part, {
46
+ id: "arr"
47
+ }, {
48
+ fileName: import.meta.url,
49
+ lineNumber: 32,
50
+ columnNumber: 9
51
+ }), _$createComponent(py.MemberExpression.Part, {
52
+ key: 12345
53
+ }, {
54
+ fileName: import.meta.url,
55
+ lineNumber: 33,
56
+ columnNumber: 9
57
+ }), _$createComponent(py.MemberExpression.Part, {
58
+ id: "foo-bar"
59
+ }, {
60
+ fileName: import.meta.url,
61
+ lineNumber: 34,
62
+ columnNumber: 9
63
+ })];
64
+ }
50
65
  }, {
51
66
  fileName: import.meta.url,
52
- lineNumber: 37,
53
- columnNumber: 9
54
- })];
67
+ lineNumber: 31,
68
+ columnNumber: 7
69
+ });
55
70
  }
56
71
  }, {
57
72
  fileName: import.meta.url,
58
- lineNumber: 34,
59
- columnNumber: 7
60
- })])).toBe(d`
73
+ lineNumber: 30,
74
+ columnNumber: 5
75
+ })).toRenderTo(`
61
76
  arr[12345].foo-bar
62
77
  `);
63
78
  });
64
79
  it("renders basic member expression with key with reference", () => {
65
80
  const rk1 = refkey();
66
- expect(toSourceText([_$createComponent(py.StatementList, {
81
+ expect(_$createComponent(TestOutput, {
67
82
  get children() {
68
- return [_$createComponent(py.VariableDeclaration, {
69
- name: "test1",
70
- refkey: rk1,
71
- initializer: 1
72
- }, {
73
- fileName: import.meta.url,
74
- lineNumber: 50,
75
- columnNumber: 9
76
- }), _$createComponent(py.MemberExpression, {
83
+ return _$createComponent(py.StatementList, {
77
84
  get children() {
78
- return [_$createComponent(py.MemberExpression.Part, {
79
- id: "arr"
80
- }, {
81
- fileName: import.meta.url,
82
- lineNumber: 52,
83
- columnNumber: 11
84
- }), _$createComponent(py.MemberExpression.Part, {
85
- key: rk1
85
+ return [_$createComponent(py.VariableDeclaration, {
86
+ name: "test1",
87
+ refkey: rk1,
88
+ initializer: 1
86
89
  }, {
87
90
  fileName: import.meta.url,
88
- lineNumber: 53,
89
- columnNumber: 11
90
- }), _$createComponent(py.MemberExpression.Part, {
91
- id: "foo-bar"
91
+ lineNumber: 49,
92
+ columnNumber: 9
93
+ }), _$createComponent(py.MemberExpression, {
94
+ get children() {
95
+ return [_$createComponent(py.MemberExpression.Part, {
96
+ id: "arr"
97
+ }, {
98
+ fileName: import.meta.url,
99
+ lineNumber: 51,
100
+ columnNumber: 11
101
+ }), _$createComponent(py.MemberExpression.Part, {
102
+ key: rk1
103
+ }, {
104
+ fileName: import.meta.url,
105
+ lineNumber: 52,
106
+ columnNumber: 11
107
+ }), _$createComponent(py.MemberExpression.Part, {
108
+ id: "foo-bar"
109
+ }, {
110
+ fileName: import.meta.url,
111
+ lineNumber: 53,
112
+ columnNumber: 11
113
+ })];
114
+ }
92
115
  }, {
93
116
  fileName: import.meta.url,
94
- lineNumber: 54,
95
- columnNumber: 11
117
+ lineNumber: 50,
118
+ columnNumber: 9
96
119
  })];
97
120
  }
98
121
  }, {
99
122
  fileName: import.meta.url,
100
- lineNumber: 51,
101
- columnNumber: 9
102
- })];
123
+ lineNumber: 48,
124
+ columnNumber: 7
125
+ });
103
126
  }
104
127
  }, {
105
128
  fileName: import.meta.url,
106
- lineNumber: 49,
107
- columnNumber: 7
108
- })])).toBe(d`
129
+ lineNumber: 47,
130
+ columnNumber: 5
131
+ })).toRenderTo(`
109
132
  test1 = 1
110
133
  arr[test1].foo-bar
111
134
  `);
112
135
  });
113
136
  it("renders basic member expression with keys", () => {
114
- expect(toSourceText([_$createComponent(py.MemberExpression, {
137
+ expect(_$createComponent(TestOutput, {
115
138
  get children() {
116
- return [_$createComponent(py.MemberExpression.Part, {
117
- id: "arr"
139
+ return _$createComponent(py.MemberExpression, {
140
+ get children() {
141
+ return [_$createComponent(py.MemberExpression.Part, {
142
+ id: "arr"
143
+ }, {
144
+ fileName: import.meta.url,
145
+ lineNumber: 69,
146
+ columnNumber: 9
147
+ }), _$createComponent(py.MemberExpression.Part, {
148
+ keys: [1, 2]
149
+ }, {
150
+ fileName: import.meta.url,
151
+ lineNumber: 70,
152
+ columnNumber: 9
153
+ }), _$createComponent(py.MemberExpression.Part, {
154
+ id: "foo-bar"
155
+ }, {
156
+ fileName: import.meta.url,
157
+ lineNumber: 71,
158
+ columnNumber: 9
159
+ })];
160
+ }
118
161
  }, {
119
162
  fileName: import.meta.url,
120
163
  lineNumber: 68,
121
- columnNumber: 9
122
- }), _$createComponent(py.MemberExpression.Part, {
123
- keys: [1, 2]
124
- }, {
125
- fileName: import.meta.url,
126
- lineNumber: 69,
127
- columnNumber: 9
128
- }), _$createComponent(py.MemberExpression.Part, {
129
- id: "foo-bar"
130
- }, {
131
- fileName: import.meta.url,
132
- lineNumber: 70,
133
- columnNumber: 9
134
- })];
164
+ columnNumber: 7
165
+ });
135
166
  }
136
167
  }, {
137
168
  fileName: import.meta.url,
138
169
  lineNumber: 67,
139
- columnNumber: 7
140
- })])).toBe(d`
170
+ columnNumber: 5
171
+ })).toRenderTo(`
141
172
  arr[1, 2].foo-bar
142
173
  `);
143
174
  });
144
175
  it("renders basic member expression with keys with references", () => {
145
176
  const rk1 = refkey();
146
177
  const rk2 = refkey();
147
- expect(toSourceText([_$createComponent(py.StatementList, {
178
+ expect(_$createComponent(TestOutput, {
148
179
  get children() {
149
- return [_$createComponent(py.VariableDeclaration, {
150
- name: "test1",
151
- refkey: rk1,
152
- initializer: 1
153
- }, {
154
- fileName: import.meta.url,
155
- lineNumber: 84,
156
- columnNumber: 9
157
- }), _$createComponent(py.VariableDeclaration, {
158
- name: "test2",
159
- refkey: rk2,
160
- initializer: 2
161
- }, {
162
- fileName: import.meta.url,
163
- lineNumber: 85,
164
- columnNumber: 9
165
- }), _$createComponent(py.MemberExpression, {
180
+ return _$createComponent(py.StatementList, {
166
181
  get children() {
167
- return [_$createComponent(py.MemberExpression.Part, {
168
- id: "arr"
182
+ return [_$createComponent(py.VariableDeclaration, {
183
+ name: "test1",
184
+ refkey: rk1,
185
+ initializer: 1
169
186
  }, {
170
187
  fileName: import.meta.url,
171
188
  lineNumber: 87,
172
- columnNumber: 11
173
- }), _$createComponent(py.MemberExpression.Part, {
174
- keys: [rk1, rk2]
189
+ columnNumber: 9
190
+ }), _$createComponent(py.VariableDeclaration, {
191
+ name: "test2",
192
+ refkey: rk2,
193
+ initializer: 2
175
194
  }, {
176
195
  fileName: import.meta.url,
177
196
  lineNumber: 88,
178
- columnNumber: 11
179
- }), _$createComponent(py.MemberExpression.Part, {
180
- id: "foo-bar"
197
+ columnNumber: 9
198
+ }), _$createComponent(py.MemberExpression, {
199
+ get children() {
200
+ return [_$createComponent(py.MemberExpression.Part, {
201
+ id: "arr"
202
+ }, {
203
+ fileName: import.meta.url,
204
+ lineNumber: 90,
205
+ columnNumber: 11
206
+ }), _$createComponent(py.MemberExpression.Part, {
207
+ keys: [rk1, rk2]
208
+ }, {
209
+ fileName: import.meta.url,
210
+ lineNumber: 91,
211
+ columnNumber: 11
212
+ }), _$createComponent(py.MemberExpression.Part, {
213
+ id: "foo-bar"
214
+ }, {
215
+ fileName: import.meta.url,
216
+ lineNumber: 92,
217
+ columnNumber: 11
218
+ })];
219
+ }
181
220
  }, {
182
221
  fileName: import.meta.url,
183
222
  lineNumber: 89,
184
- columnNumber: 11
223
+ columnNumber: 9
185
224
  })];
186
225
  }
187
226
  }, {
188
227
  fileName: import.meta.url,
189
228
  lineNumber: 86,
190
- columnNumber: 9
191
- })];
229
+ columnNumber: 7
230
+ });
192
231
  }
193
232
  }, {
194
233
  fileName: import.meta.url,
195
- lineNumber: 83,
196
- columnNumber: 7
197
- })])).toBe(d`
234
+ lineNumber: 85,
235
+ columnNumber: 5
236
+ })).toRenderTo(`
198
237
  test1 = 1
199
238
  test2 = 2
200
239
  arr[test1, test2].foo-bar
201
240
  `);
202
241
  });
203
242
  it("renders basic member expression with slice - 1", () => {
204
- expect(toSourceText([_$createComponent(py.MemberExpression, {
243
+ expect(_$createComponent(TestOutput, {
205
244
  get children() {
206
- return [_$createComponent(py.MemberExpression.Part, {
207
- id: "arr"
208
- }, {
209
- fileName: import.meta.url,
210
- lineNumber: 104,
211
- columnNumber: 9
212
- }), _$createComponent(py.MemberExpression.Part, {
213
- slice: {
214
- start: 1,
215
- stop: 3,
216
- step: 2
245
+ return _$createComponent(py.MemberExpression, {
246
+ get children() {
247
+ return [_$createComponent(py.MemberExpression.Part, {
248
+ id: "arr"
249
+ }, {
250
+ fileName: import.meta.url,
251
+ lineNumber: 109,
252
+ columnNumber: 9
253
+ }), _$createComponent(py.MemberExpression.Part, {
254
+ slice: {
255
+ start: 1,
256
+ stop: 3,
257
+ step: 2
258
+ }
259
+ }, {
260
+ fileName: import.meta.url,
261
+ lineNumber: 110,
262
+ columnNumber: 9
263
+ }), _$createComponent(py.MemberExpression.Part, {
264
+ id: "foo-bar"
265
+ }, {
266
+ fileName: import.meta.url,
267
+ lineNumber: 111,
268
+ columnNumber: 9
269
+ })];
217
270
  }
218
271
  }, {
219
272
  fileName: import.meta.url,
220
- lineNumber: 105,
221
- columnNumber: 9
222
- }), _$createComponent(py.MemberExpression.Part, {
223
- id: "foo-bar"
224
- }, {
225
- fileName: import.meta.url,
226
- lineNumber: 106,
227
- columnNumber: 9
228
- })];
273
+ lineNumber: 108,
274
+ columnNumber: 7
275
+ });
229
276
  }
230
277
  }, {
231
278
  fileName: import.meta.url,
232
- lineNumber: 103,
233
- columnNumber: 7
234
- })])).toBe(d`
279
+ lineNumber: 107,
280
+ columnNumber: 5
281
+ })).toRenderTo(`
235
282
  arr[1:3:2].foo-bar
236
283
  `);
237
284
  });
@@ -239,69 +286,77 @@ it("renders basic member expression with slice - 1 with references", () => {
239
286
  const rk1 = refkey();
240
287
  const rk2 = refkey();
241
288
  const rk3 = refkey();
242
- expect(toSourceText([_$createComponent(py.StatementList, {
289
+ expect(_$createComponent(TestOutput, {
243
290
  get children() {
244
- return [_$createComponent(py.VariableDeclaration, {
245
- name: "test1",
246
- refkey: rk1,
247
- initializer: 1
248
- }, {
249
- fileName: import.meta.url,
250
- lineNumber: 121,
251
- columnNumber: 9
252
- }), _$createComponent(py.VariableDeclaration, {
253
- name: "test2",
254
- refkey: rk2,
255
- initializer: 3
256
- }, {
257
- fileName: import.meta.url,
258
- lineNumber: 122,
259
- columnNumber: 9
260
- }), _$createComponent(py.VariableDeclaration, {
261
- name: "test3",
262
- refkey: rk3,
263
- initializer: 2
264
- }, {
265
- fileName: import.meta.url,
266
- lineNumber: 123,
267
- columnNumber: 9
268
- }), _$createComponent(py.MemberExpression, {
291
+ return _$createComponent(py.StatementList, {
269
292
  get children() {
270
- return [_$createComponent(py.MemberExpression.Part, {
271
- id: "arr"
293
+ return [_$createComponent(py.VariableDeclaration, {
294
+ name: "test1",
295
+ refkey: rk1,
296
+ initializer: 1
272
297
  }, {
273
298
  fileName: import.meta.url,
274
- lineNumber: 125,
275
- columnNumber: 11
276
- }), _$createComponent(py.MemberExpression.Part, {
277
- slice: {
278
- start: rk1,
279
- stop: rk2,
280
- step: rk3
281
- }
299
+ lineNumber: 128,
300
+ columnNumber: 9
301
+ }), _$createComponent(py.VariableDeclaration, {
302
+ name: "test2",
303
+ refkey: rk2,
304
+ initializer: 3
282
305
  }, {
283
306
  fileName: import.meta.url,
284
- lineNumber: 126,
285
- columnNumber: 11
286
- }), _$createComponent(py.MemberExpression.Part, {
287
- id: "foo-bar"
307
+ lineNumber: 129,
308
+ columnNumber: 9
309
+ }), _$createComponent(py.VariableDeclaration, {
310
+ name: "test3",
311
+ refkey: rk3,
312
+ initializer: 2
288
313
  }, {
289
314
  fileName: import.meta.url,
290
- lineNumber: 129,
291
- columnNumber: 11
315
+ lineNumber: 130,
316
+ columnNumber: 9
317
+ }), _$createComponent(py.MemberExpression, {
318
+ get children() {
319
+ return [_$createComponent(py.MemberExpression.Part, {
320
+ id: "arr"
321
+ }, {
322
+ fileName: import.meta.url,
323
+ lineNumber: 132,
324
+ columnNumber: 11
325
+ }), _$createComponent(py.MemberExpression.Part, {
326
+ slice: {
327
+ start: rk1,
328
+ stop: rk2,
329
+ step: rk3
330
+ }
331
+ }, {
332
+ fileName: import.meta.url,
333
+ lineNumber: 133,
334
+ columnNumber: 11
335
+ }), _$createComponent(py.MemberExpression.Part, {
336
+ id: "foo-bar"
337
+ }, {
338
+ fileName: import.meta.url,
339
+ lineNumber: 136,
340
+ columnNumber: 11
341
+ })];
342
+ }
343
+ }, {
344
+ fileName: import.meta.url,
345
+ lineNumber: 131,
346
+ columnNumber: 9
292
347
  })];
293
348
  }
294
349
  }, {
295
350
  fileName: import.meta.url,
296
- lineNumber: 124,
297
- columnNumber: 9
298
- })];
351
+ lineNumber: 127,
352
+ columnNumber: 7
353
+ });
299
354
  }
300
355
  }, {
301
356
  fileName: import.meta.url,
302
- lineNumber: 120,
303
- columnNumber: 7
304
- })])).toBe(d`
357
+ lineNumber: 126,
358
+ columnNumber: 5
359
+ })).toRenderTo(`
305
360
  test1 = 1
306
361
  test2 = 3
307
362
  test3 = 2
@@ -309,473 +364,577 @@ it("renders basic member expression with slice - 1 with references", () => {
309
364
  `);
310
365
  });
311
366
  it("renders basic member expression with slice - 2", () => {
312
- expect(toSourceText([_$createComponent(py.MemberExpression, {
367
+ expect(_$createComponent(TestOutput, {
313
368
  get children() {
314
- return [_$createComponent(py.MemberExpression.Part, {
315
- id: "arr"
316
- }, {
317
- fileName: import.meta.url,
318
- lineNumber: 145,
319
- columnNumber: 9
320
- }), _$createComponent(py.MemberExpression.Part, {
321
- slice: {
322
- stop: 3
369
+ return _$createComponent(py.MemberExpression, {
370
+ get children() {
371
+ return [_$createComponent(py.MemberExpression.Part, {
372
+ id: "arr"
373
+ }, {
374
+ fileName: import.meta.url,
375
+ lineNumber: 154,
376
+ columnNumber: 9
377
+ }), _$createComponent(py.MemberExpression.Part, {
378
+ slice: {
379
+ stop: 3
380
+ }
381
+ }, {
382
+ fileName: import.meta.url,
383
+ lineNumber: 155,
384
+ columnNumber: 9
385
+ }), _$createComponent(py.MemberExpression.Part, {
386
+ id: "foo-bar"
387
+ }, {
388
+ fileName: import.meta.url,
389
+ lineNumber: 156,
390
+ columnNumber: 9
391
+ })];
323
392
  }
324
393
  }, {
325
394
  fileName: import.meta.url,
326
- lineNumber: 146,
327
- columnNumber: 9
328
- }), _$createComponent(py.MemberExpression.Part, {
329
- id: "foo-bar"
330
- }, {
331
- fileName: import.meta.url,
332
- lineNumber: 147,
333
- columnNumber: 9
334
- })];
395
+ lineNumber: 153,
396
+ columnNumber: 7
397
+ });
335
398
  }
336
399
  }, {
337
400
  fileName: import.meta.url,
338
- lineNumber: 144,
339
- columnNumber: 7
340
- })])).toBe(d`
401
+ lineNumber: 152,
402
+ columnNumber: 5
403
+ })).toRenderTo(`
341
404
  arr[:3].foo-bar
342
405
  `);
343
406
  });
344
407
  it("renders basic member expression with slice - 3", () => {
345
- expect(toSourceText([_$createComponent(py.MemberExpression, {
408
+ expect(_$createComponent(TestOutput, {
346
409
  get children() {
347
- return [_$createComponent(py.MemberExpression.Part, {
348
- id: "arr"
349
- }, {
350
- fileName: import.meta.url,
351
- lineNumber: 159,
352
- columnNumber: 9
353
- }), _$createComponent(py.MemberExpression.Part, {
354
- slice: {
355
- step: 2
410
+ return _$createComponent(py.MemberExpression, {
411
+ get children() {
412
+ return [_$createComponent(py.MemberExpression.Part, {
413
+ id: "arr"
414
+ }, {
415
+ fileName: import.meta.url,
416
+ lineNumber: 170,
417
+ columnNumber: 9
418
+ }), _$createComponent(py.MemberExpression.Part, {
419
+ slice: {
420
+ step: 2
421
+ }
422
+ }, {
423
+ fileName: import.meta.url,
424
+ lineNumber: 171,
425
+ columnNumber: 9
426
+ }), _$createComponent(py.MemberExpression.Part, {
427
+ id: "foo-bar"
428
+ }, {
429
+ fileName: import.meta.url,
430
+ lineNumber: 172,
431
+ columnNumber: 9
432
+ })];
356
433
  }
357
434
  }, {
358
435
  fileName: import.meta.url,
359
- lineNumber: 160,
360
- columnNumber: 9
361
- }), _$createComponent(py.MemberExpression.Part, {
362
- id: "foo-bar"
363
- }, {
364
- fileName: import.meta.url,
365
- lineNumber: 161,
366
- columnNumber: 9
367
- })];
436
+ lineNumber: 169,
437
+ columnNumber: 7
438
+ });
368
439
  }
369
440
  }, {
370
441
  fileName: import.meta.url,
371
- lineNumber: 158,
372
- columnNumber: 7
373
- })])).toBe(d`
442
+ lineNumber: 168,
443
+ columnNumber: 5
444
+ })).toRenderTo(`
374
445
  arr[::2].foo-bar
375
446
  `);
376
447
  });
377
448
  it("renders basic member expression with slice - 4", () => {
378
- expect(toSourceText([_$createComponent(py.MemberExpression, {
449
+ expect(_$createComponent(TestOutput, {
379
450
  get children() {
380
- return [_$createComponent(py.MemberExpression.Part, {
381
- id: "arr"
382
- }, {
383
- fileName: import.meta.url,
384
- lineNumber: 173,
385
- columnNumber: 9
386
- }), _$createComponent(py.MemberExpression.Part, {
387
- slice: {
388
- start: 1
451
+ return _$createComponent(py.MemberExpression, {
452
+ get children() {
453
+ return [_$createComponent(py.MemberExpression.Part, {
454
+ id: "arr"
455
+ }, {
456
+ fileName: import.meta.url,
457
+ lineNumber: 186,
458
+ columnNumber: 9
459
+ }), _$createComponent(py.MemberExpression.Part, {
460
+ slice: {
461
+ start: 1
462
+ }
463
+ }, {
464
+ fileName: import.meta.url,
465
+ lineNumber: 187,
466
+ columnNumber: 9
467
+ }), _$createComponent(py.MemberExpression.Part, {
468
+ id: "foo-bar"
469
+ }, {
470
+ fileName: import.meta.url,
471
+ lineNumber: 188,
472
+ columnNumber: 9
473
+ })];
389
474
  }
390
475
  }, {
391
476
  fileName: import.meta.url,
392
- lineNumber: 174,
393
- columnNumber: 9
394
- }), _$createComponent(py.MemberExpression.Part, {
395
- id: "foo-bar"
396
- }, {
397
- fileName: import.meta.url,
398
- lineNumber: 175,
399
- columnNumber: 9
400
- })];
477
+ lineNumber: 185,
478
+ columnNumber: 7
479
+ });
401
480
  }
402
481
  }, {
403
482
  fileName: import.meta.url,
404
- lineNumber: 172,
405
- columnNumber: 7
406
- })])).toBe(d`
483
+ lineNumber: 184,
484
+ columnNumber: 5
485
+ })).toRenderTo(`
407
486
  arr[1:].foo-bar
408
487
  `);
409
488
  });
410
489
  it("renders basic member expression with slice - 5", () => {
411
- expect(toSourceText([_$createComponent(py.MemberExpression, {
490
+ expect(_$createComponent(TestOutput, {
412
491
  get children() {
413
- return [_$createComponent(py.MemberExpression.Part, {
414
- id: "arr"
415
- }, {
416
- fileName: import.meta.url,
417
- lineNumber: 187,
418
- columnNumber: 9
419
- }), _$createComponent(py.MemberExpression.Part, {
420
- slice: {
421
- start: 1,
422
- step: 2
492
+ return _$createComponent(py.MemberExpression, {
493
+ get children() {
494
+ return [_$createComponent(py.MemberExpression.Part, {
495
+ id: "arr"
496
+ }, {
497
+ fileName: import.meta.url,
498
+ lineNumber: 202,
499
+ columnNumber: 9
500
+ }), _$createComponent(py.MemberExpression.Part, {
501
+ slice: {
502
+ start: 1,
503
+ step: 2
504
+ }
505
+ }, {
506
+ fileName: import.meta.url,
507
+ lineNumber: 203,
508
+ columnNumber: 9
509
+ }), _$createComponent(py.MemberExpression.Part, {
510
+ id: "foo-bar"
511
+ }, {
512
+ fileName: import.meta.url,
513
+ lineNumber: 204,
514
+ columnNumber: 9
515
+ })];
423
516
  }
424
517
  }, {
425
518
  fileName: import.meta.url,
426
- lineNumber: 188,
427
- columnNumber: 9
428
- }), _$createComponent(py.MemberExpression.Part, {
429
- id: "foo-bar"
430
- }, {
431
- fileName: import.meta.url,
432
- lineNumber: 189,
433
- columnNumber: 9
434
- })];
519
+ lineNumber: 201,
520
+ columnNumber: 7
521
+ });
435
522
  }
436
523
  }, {
437
524
  fileName: import.meta.url,
438
- lineNumber: 186,
439
- columnNumber: 7
440
- })])).toBe(d`
525
+ lineNumber: 200,
526
+ columnNumber: 5
527
+ })).toRenderTo(`
441
528
  arr[1::2].foo-bar
442
529
  `);
443
530
  });
444
531
  it("renders basic member expression with an expression index - 1", () => {
445
532
  const xRefkey = refkey();
446
- expect(toSourceText([_$createComponent(py.StatementList, {
533
+ expect(_$createComponent(TestOutput, {
447
534
  get children() {
448
- return [_$createComponent(py.VariableDeclaration, {
449
- name: "x",
450
- initializer: 1,
451
- refkey: xRefkey
452
- }, {
453
- fileName: import.meta.url,
454
- lineNumber: 202,
455
- columnNumber: 9
456
- }), _$createComponent(py.MemberExpression, {
535
+ return _$createComponent(py.StatementList, {
457
536
  get children() {
458
- return [_$createComponent(py.MemberExpression.Part, {
459
- id: "arr"
460
- }, {
461
- fileName: import.meta.url,
462
- lineNumber: 204,
463
- columnNumber: 11
464
- }), _$createComponent(py.MemberExpression.Part, {
465
- key: code`${xRefkey} + 1`
537
+ return [_$createComponent(py.VariableDeclaration, {
538
+ name: "x",
539
+ initializer: 1,
540
+ refkey: xRefkey
466
541
  }, {
467
542
  fileName: import.meta.url,
468
- lineNumber: 205,
469
- columnNumber: 11
470
- }), _$createComponent(py.MemberExpression.Part, {
471
- id: "foo-bar"
543
+ lineNumber: 219,
544
+ columnNumber: 9
545
+ }), _$createComponent(py.MemberExpression, {
546
+ get children() {
547
+ return [_$createComponent(py.MemberExpression.Part, {
548
+ id: "arr"
549
+ }, {
550
+ fileName: import.meta.url,
551
+ lineNumber: 221,
552
+ columnNumber: 11
553
+ }), _$createComponent(py.MemberExpression.Part, {
554
+ key: code`${xRefkey} + 1`
555
+ }, {
556
+ fileName: import.meta.url,
557
+ lineNumber: 222,
558
+ columnNumber: 11
559
+ }), _$createComponent(py.MemberExpression.Part, {
560
+ id: "foo-bar"
561
+ }, {
562
+ fileName: import.meta.url,
563
+ lineNumber: 223,
564
+ columnNumber: 11
565
+ })];
566
+ }
472
567
  }, {
473
568
  fileName: import.meta.url,
474
- lineNumber: 206,
475
- columnNumber: 11
569
+ lineNumber: 220,
570
+ columnNumber: 9
476
571
  })];
477
572
  }
478
573
  }, {
479
574
  fileName: import.meta.url,
480
- lineNumber: 203,
481
- columnNumber: 9
482
- })];
575
+ lineNumber: 218,
576
+ columnNumber: 7
577
+ });
483
578
  }
484
579
  }, {
485
580
  fileName: import.meta.url,
486
- lineNumber: 201,
487
- columnNumber: 7
488
- })])).toBe(d`
581
+ lineNumber: 217,
582
+ columnNumber: 5
583
+ })).toRenderTo(`
489
584
  x = 1
490
585
  arr[x + 1].foo-bar
491
586
  `);
492
587
  });
493
588
  it("renders basic member expression with an expression index - 2", () => {
494
- expect(toSourceText([_$createComponent(py.StatementList, {
589
+ expect(_$createComponent(TestOutput, {
495
590
  get children() {
496
- return _$createComponent(py.MemberExpression, {
591
+ return _$createComponent(py.StatementList, {
497
592
  get children() {
498
- return [_$createComponent(py.MemberExpression.Part, {
499
- id: "arr"
500
- }, {
501
- fileName: import.meta.url,
502
- lineNumber: 221,
503
- columnNumber: 11
504
- }), _$createComponent(py.MemberExpression.Part, {
505
- key: code`"foo" + 1`
506
- }, {
507
- fileName: import.meta.url,
508
- lineNumber: 222,
509
- columnNumber: 11
510
- }), _$createComponent(py.MemberExpression.Part, {
511
- id: "foo-bar"
593
+ return _$createComponent(py.MemberExpression, {
594
+ get children() {
595
+ return [_$createComponent(py.MemberExpression.Part, {
596
+ id: "arr"
597
+ }, {
598
+ fileName: import.meta.url,
599
+ lineNumber: 240,
600
+ columnNumber: 11
601
+ }), _$createComponent(py.MemberExpression.Part, {
602
+ key: code`"foo" + 1`
603
+ }, {
604
+ fileName: import.meta.url,
605
+ lineNumber: 241,
606
+ columnNumber: 11
607
+ }), _$createComponent(py.MemberExpression.Part, {
608
+ id: "foo-bar"
609
+ }, {
610
+ fileName: import.meta.url,
611
+ lineNumber: 242,
612
+ columnNumber: 11
613
+ })];
614
+ }
512
615
  }, {
513
616
  fileName: import.meta.url,
514
- lineNumber: 223,
515
- columnNumber: 11
516
- })];
617
+ lineNumber: 239,
618
+ columnNumber: 9
619
+ });
517
620
  }
518
621
  }, {
519
622
  fileName: import.meta.url,
520
- lineNumber: 220,
521
- columnNumber: 9
623
+ lineNumber: 238,
624
+ columnNumber: 7
522
625
  });
523
626
  }
524
627
  }, {
525
628
  fileName: import.meta.url,
526
- lineNumber: 219,
527
- columnNumber: 7
528
- })])).toBe(d`
629
+ lineNumber: 237,
630
+ columnNumber: 5
631
+ })).toRenderTo(`
529
632
  arr["foo" + 1].foo-bar
530
633
  `);
531
634
  });
532
635
  it("throws an error for invalid identifiers with quotes", () => {
533
- expect(() => toSourceText([_$createComponent(py.MemberExpression, {
636
+ expect(() => render(_$createComponent(TestOutput, {
534
637
  get children() {
535
- return [_$createComponent(py.MemberExpression.Part, {
536
- id: "obj"
537
- }, {
538
- fileName: import.meta.url,
539
- lineNumber: 236,
540
- columnNumber: 9
541
- }), _$createComponent(py.MemberExpression.Part, {
542
- id: `property-"name"`
638
+ return _$createComponent(py.MemberExpression, {
639
+ get children() {
640
+ return [_$createComponent(py.MemberExpression.Part, {
641
+ id: "obj"
642
+ }, {
643
+ fileName: import.meta.url,
644
+ lineNumber: 258,
645
+ columnNumber: 11
646
+ }), _$createComponent(py.MemberExpression.Part, {
647
+ id: `property-"name"`
648
+ }, {
649
+ fileName: import.meta.url,
650
+ lineNumber: 259,
651
+ columnNumber: 11
652
+ })];
653
+ }
543
654
  }, {
544
655
  fileName: import.meta.url,
545
- lineNumber: 237,
656
+ lineNumber: 257,
546
657
  columnNumber: 9
547
- })];
658
+ });
548
659
  }
549
660
  }, {
550
661
  fileName: import.meta.url,
551
- lineNumber: 235,
662
+ lineNumber: 256,
552
663
  columnNumber: 7
553
- })])).toThrowError(/Invalid identifier: property-"name"/);
664
+ }))).toThrowError(/Invalid identifier: property-"name"/);
554
665
  });
555
666
  it("supports multiple levels of nesting", () => {
556
- expect(toSourceText([_$createComponent(py.MemberExpression, {
667
+ expect(_$createComponent(TestOutput, {
557
668
  get children() {
558
- return [_$createComponent(py.MemberExpression.Part, {
559
- id: "a"
560
- }, {
561
- fileName: import.meta.url,
562
- lineNumber: 247,
563
- columnNumber: 9
564
- }), _$createComponent(py.MemberExpression.Part, {
565
- id: "b"
566
- }, {
567
- fileName: import.meta.url,
568
- lineNumber: 248,
569
- columnNumber: 9
570
- }), _$createComponent(py.MemberExpression.Part, {
571
- id: "c"
572
- }, {
573
- fileName: import.meta.url,
574
- lineNumber: 249,
575
- columnNumber: 9
576
- }), _$createComponent(py.MemberExpression.Part, {
577
- id: "d"
669
+ return _$createComponent(py.MemberExpression, {
670
+ get children() {
671
+ return [_$createComponent(py.MemberExpression.Part, {
672
+ id: "a"
673
+ }, {
674
+ fileName: import.meta.url,
675
+ lineNumber: 270,
676
+ columnNumber: 9
677
+ }), _$createComponent(py.MemberExpression.Part, {
678
+ id: "b"
679
+ }, {
680
+ fileName: import.meta.url,
681
+ lineNumber: 271,
682
+ columnNumber: 9
683
+ }), _$createComponent(py.MemberExpression.Part, {
684
+ id: "c"
685
+ }, {
686
+ fileName: import.meta.url,
687
+ lineNumber: 272,
688
+ columnNumber: 9
689
+ }), _$createComponent(py.MemberExpression.Part, {
690
+ id: "d"
691
+ }, {
692
+ fileName: import.meta.url,
693
+ lineNumber: 273,
694
+ columnNumber: 9
695
+ })];
696
+ }
578
697
  }, {
579
698
  fileName: import.meta.url,
580
- lineNumber: 250,
581
- columnNumber: 9
582
- })];
699
+ lineNumber: 269,
700
+ columnNumber: 7
701
+ });
583
702
  }
584
703
  }, {
585
704
  fileName: import.meta.url,
586
- lineNumber: 246,
587
- columnNumber: 7
588
- })])).toBe(d`
705
+ lineNumber: 268,
706
+ columnNumber: 5
707
+ })).toRenderTo(`
589
708
  a.b.c.d
590
709
  `);
591
710
  });
592
711
  it("handles a mix of dot and bracket notation", () => {
593
- expect(toSourceText([_$createComponent(py.MemberExpression, {
712
+ expect(_$createComponent(TestOutput, {
594
713
  get children() {
595
- return [_$createComponent(py.MemberExpression.Part, {
596
- id: "obj"
597
- }, {
598
- fileName: import.meta.url,
599
- lineNumber: 262,
600
- columnNumber: 9
601
- }), _$createComponent(py.MemberExpression.Part, {
602
- id: "normalProp"
603
- }, {
604
- fileName: import.meta.url,
605
- lineNumber: 263,
606
- columnNumber: 9
607
- }), _$createComponent(py.MemberExpression.Part, {
608
- key: "special-prop"
609
- }, {
610
- fileName: import.meta.url,
611
- lineNumber: 264,
612
- columnNumber: 9
613
- }), _$createComponent(py.MemberExpression.Part, {
614
- key: "123"
714
+ return _$createComponent(py.MemberExpression, {
715
+ get children() {
716
+ return [_$createComponent(py.MemberExpression.Part, {
717
+ id: "obj"
718
+ }, {
719
+ fileName: import.meta.url,
720
+ lineNumber: 287,
721
+ columnNumber: 9
722
+ }), _$createComponent(py.MemberExpression.Part, {
723
+ id: "normalProp"
724
+ }, {
725
+ fileName: import.meta.url,
726
+ lineNumber: 288,
727
+ columnNumber: 9
728
+ }), _$createComponent(py.MemberExpression.Part, {
729
+ key: "special-prop"
730
+ }, {
731
+ fileName: import.meta.url,
732
+ lineNumber: 289,
733
+ columnNumber: 9
734
+ }), _$createComponent(py.MemberExpression.Part, {
735
+ key: "123"
736
+ }, {
737
+ fileName: import.meta.url,
738
+ lineNumber: 290,
739
+ columnNumber: 9
740
+ })];
741
+ }
615
742
  }, {
616
743
  fileName: import.meta.url,
617
- lineNumber: 265,
618
- columnNumber: 9
619
- })];
744
+ lineNumber: 286,
745
+ columnNumber: 7
746
+ });
620
747
  }
621
748
  }, {
622
749
  fileName: import.meta.url,
623
- lineNumber: 261,
624
- columnNumber: 7
625
- })])).toBe(d`
750
+ lineNumber: 285,
751
+ columnNumber: 5
752
+ })).toRenderTo(`
626
753
  obj.normalProp["special-prop"]["123"]
627
754
  `);
628
755
  });
629
756
  it("throws an error when providing conflicting part props", () => {
630
- expect(() => toSourceText([_$createComponent(py.MemberExpression, {
757
+ expect(() => render(_$createComponent(TestOutput, {
631
758
  get children() {
632
- return [_$createComponent(py.MemberExpression.Part, {
633
- id: "obj"
634
- }, {
635
- fileName: import.meta.url,
636
- lineNumber: 277,
637
- columnNumber: 9
638
- }), _$createComponent(py.MemberExpression.Part, {
639
- id: "property",
640
- args: [1, 2]
759
+ return _$createComponent(py.MemberExpression, {
760
+ get children() {
761
+ return [_$createComponent(py.MemberExpression.Part, {
762
+ id: "obj"
763
+ }, {
764
+ fileName: import.meta.url,
765
+ lineNumber: 305,
766
+ columnNumber: 11
767
+ }), _$createComponent(py.MemberExpression.Part, {
768
+ id: "property",
769
+ args: [1, 2]
770
+ }, {
771
+ fileName: import.meta.url,
772
+ lineNumber: 306,
773
+ columnNumber: 11
774
+ })];
775
+ }
641
776
  }, {
642
777
  fileName: import.meta.url,
643
- lineNumber: 278,
778
+ lineNumber: 304,
644
779
  columnNumber: 9
645
- })];
780
+ });
646
781
  }
647
782
  }, {
648
783
  fileName: import.meta.url,
649
- lineNumber: 276,
784
+ lineNumber: 303,
650
785
  columnNumber: 7
651
- })])).toThrowError(`Only one of args, id can be used for a MemberExpression part at a time`);
786
+ }))).toThrowError(`Only one of args, id can be used for a MemberExpression part at a time`);
652
787
  });
653
788
  it("throws an error when providing an empty slice", () => {
654
- expect(() => toSourceText([_$createComponent(py.MemberExpression, {
789
+ expect(() => render(_$createComponent(TestOutput, {
655
790
  get children() {
656
- return [_$createComponent(py.MemberExpression.Part, {
657
- id: "obj"
658
- }, {
659
- fileName: import.meta.url,
660
- lineNumber: 290,
661
- columnNumber: 9
662
- }), _$createComponent(py.MemberExpression.Part, {
663
- slice: {}
791
+ return _$createComponent(py.MemberExpression, {
792
+ get children() {
793
+ return [_$createComponent(py.MemberExpression.Part, {
794
+ id: "obj"
795
+ }, {
796
+ fileName: import.meta.url,
797
+ lineNumber: 320,
798
+ columnNumber: 11
799
+ }), _$createComponent(py.MemberExpression.Part, {
800
+ slice: {}
801
+ }, {
802
+ fileName: import.meta.url,
803
+ lineNumber: 321,
804
+ columnNumber: 11
805
+ })];
806
+ }
664
807
  }, {
665
808
  fileName: import.meta.url,
666
- lineNumber: 291,
809
+ lineNumber: 319,
667
810
  columnNumber: 9
668
- })];
811
+ });
669
812
  }
670
813
  }, {
671
814
  fileName: import.meta.url,
672
- lineNumber: 289,
815
+ lineNumber: 318,
673
816
  columnNumber: 7
674
- })])).toThrowError(`MemberExpression.Part: slice object cannot be empty`);
817
+ }))).toThrowError(`MemberExpression.Part: slice object cannot be empty`);
675
818
  });
676
819
  it("throws an error when providing an empty array", () => {
677
- expect(() => toSourceText([_$createComponent(py.MemberExpression, {
678
- get children() {
679
- return [_$createComponent(py.MemberExpression.Part, {
680
- id: "obj"
681
- }, {
682
- fileName: import.meta.url,
683
- lineNumber: 301,
684
- columnNumber: 9
685
- }), _$createComponent(py.MemberExpression.Part, {
686
- keys: []
687
- }, {
688
- fileName: import.meta.url,
689
- lineNumber: 302,
690
- columnNumber: 9
691
- })];
692
- }
693
- }, {
694
- fileName: import.meta.url,
695
- lineNumber: 300,
696
- columnNumber: 7
697
- })])).toThrowError(`MemberExpression.Part: keys array cannot be empty`);
698
- });
699
- it("takes children for the id part", () => {
700
- expect(toSourceText([_$createComponent(py.StatementList, {
820
+ expect(() => render(_$createComponent(TestOutput, {
701
821
  get children() {
702
- return [_$createComponent(py.MemberExpression, {
822
+ return _$createComponent(py.MemberExpression, {
703
823
  get children() {
704
824
  return [_$createComponent(py.MemberExpression.Part, {
705
- id: "child1"
825
+ id: "obj"
706
826
  }, {
707
827
  fileName: import.meta.url,
708
- lineNumber: 313,
828
+ lineNumber: 333,
709
829
  columnNumber: 11
710
830
  }), _$createComponent(py.MemberExpression.Part, {
711
- key: "child1"
831
+ keys: []
712
832
  }, {
713
833
  fileName: import.meta.url,
714
- lineNumber: 314,
834
+ lineNumber: 334,
715
835
  columnNumber: 11
716
836
  })];
717
837
  }
718
838
  }, {
719
839
  fileName: import.meta.url,
720
- lineNumber: 312,
840
+ lineNumber: 332,
721
841
  columnNumber: 9
722
- }), _$createComponent(py.MemberExpression, {
842
+ });
843
+ }
844
+ }, {
845
+ fileName: import.meta.url,
846
+ lineNumber: 331,
847
+ columnNumber: 7
848
+ }))).toThrowError(`MemberExpression.Part: keys array cannot be empty`);
849
+ });
850
+ it("takes children for the id part", () => {
851
+ expect(_$createComponent(TestOutput, {
852
+ get children() {
853
+ return _$createComponent(py.StatementList, {
723
854
  get children() {
724
- return [_$createComponent(py.MemberExpression.Part, {
725
- id: "child1"
726
- }, {
727
- fileName: import.meta.url,
728
- lineNumber: 317,
729
- columnNumber: 11
730
- }), _$createComponent(py.MemberExpression.Part, {
731
- key: "child2"
732
- }, {
733
- fileName: import.meta.url,
734
- lineNumber: 318,
735
- columnNumber: 11
736
- }), _$createComponent(py.MemberExpression.Part, {
737
- args: true
738
- }, {
739
- fileName: import.meta.url,
740
- lineNumber: 319,
741
- columnNumber: 11
742
- }), _$createComponent(py.MemberExpression.Part, {
743
- key: "child3"
744
- }, {
745
- fileName: import.meta.url,
746
- lineNumber: 320,
747
- columnNumber: 11
748
- }), _$createComponent(py.MemberExpression.Part, {
749
- args: true
750
- }, {
751
- fileName: import.meta.url,
752
- lineNumber: 321,
753
- columnNumber: 11
754
- }), _$createComponent(py.MemberExpression.Part, {
755
- key: code`"foo" + 1`
855
+ return [_$createComponent(py.MemberExpression, {
856
+ get children() {
857
+ return [_$createComponent(py.MemberExpression.Part, {
858
+ id: "child1"
859
+ }, {
860
+ fileName: import.meta.url,
861
+ lineNumber: 346,
862
+ columnNumber: 11
863
+ }), _$createComponent(py.MemberExpression.Part, {
864
+ key: "child1"
865
+ }, {
866
+ fileName: import.meta.url,
867
+ lineNumber: 347,
868
+ columnNumber: 11
869
+ })];
870
+ }
756
871
  }, {
757
872
  fileName: import.meta.url,
758
- lineNumber: 322,
759
- columnNumber: 11
760
- }), _$createComponent(py.MemberExpression.Part, {
761
- args: true
873
+ lineNumber: 345,
874
+ columnNumber: 9
875
+ }), _$createComponent(py.MemberExpression, {
876
+ get children() {
877
+ return [_$createComponent(py.MemberExpression.Part, {
878
+ id: "child1"
879
+ }, {
880
+ fileName: import.meta.url,
881
+ lineNumber: 350,
882
+ columnNumber: 11
883
+ }), _$createComponent(py.MemberExpression.Part, {
884
+ key: "child2"
885
+ }, {
886
+ fileName: import.meta.url,
887
+ lineNumber: 351,
888
+ columnNumber: 11
889
+ }), _$createComponent(py.MemberExpression.Part, {
890
+ args: true
891
+ }, {
892
+ fileName: import.meta.url,
893
+ lineNumber: 352,
894
+ columnNumber: 11
895
+ }), _$createComponent(py.MemberExpression.Part, {
896
+ key: "child3"
897
+ }, {
898
+ fileName: import.meta.url,
899
+ lineNumber: 353,
900
+ columnNumber: 11
901
+ }), _$createComponent(py.MemberExpression.Part, {
902
+ args: true
903
+ }, {
904
+ fileName: import.meta.url,
905
+ lineNumber: 354,
906
+ columnNumber: 11
907
+ }), _$createComponent(py.MemberExpression.Part, {
908
+ key: code`"foo" + 1`
909
+ }, {
910
+ fileName: import.meta.url,
911
+ lineNumber: 355,
912
+ columnNumber: 11
913
+ }), _$createComponent(py.MemberExpression.Part, {
914
+ args: true
915
+ }, {
916
+ fileName: import.meta.url,
917
+ lineNumber: 356,
918
+ columnNumber: 11
919
+ })];
920
+ }
762
921
  }, {
763
922
  fileName: import.meta.url,
764
- lineNumber: 323,
765
- columnNumber: 11
923
+ lineNumber: 349,
924
+ columnNumber: 9
766
925
  })];
767
926
  }
768
927
  }, {
769
928
  fileName: import.meta.url,
770
- lineNumber: 316,
771
- columnNumber: 9
772
- })];
929
+ lineNumber: 344,
930
+ columnNumber: 7
931
+ });
773
932
  }
774
933
  }, {
775
934
  fileName: import.meta.url,
776
- lineNumber: 311,
777
- columnNumber: 7
778
- })])).toBe(d`
935
+ lineNumber: 343,
936
+ columnNumber: 5
937
+ })).toRenderTo(`
779
938
  child1["child1"]
780
939
  child1["child2"]()["child3"]()["foo" + 1]()
781
940
  `);
@@ -784,51 +943,59 @@ describe("with refkeys", () => {
784
943
  it("handles symbols correctly", () => {
785
944
  const rk1 = refkey();
786
945
  const rk2 = refkey();
787
- expect(toSourceText([_$createComponent(py.StatementList, {
946
+ expect(_$createComponent(TestOutput, {
788
947
  get children() {
789
- return [_$createComponent(py.VariableDeclaration, {
790
- name: "test1",
791
- refkey: rk1,
792
- initializer: 1
793
- }, {
794
- fileName: import.meta.url,
795
- lineNumber: 340,
796
- columnNumber: 11
797
- }), _$createComponent(py.VariableDeclaration, {
798
- name: "test1",
799
- refkey: rk2,
800
- initializer: 2
801
- }, {
802
- fileName: import.meta.url,
803
- lineNumber: 341,
804
- columnNumber: 11
805
- }), _$createComponent(py.MemberExpression, {
948
+ return _$createComponent(py.StatementList, {
806
949
  get children() {
807
- return [_$createComponent(py.MemberExpression.Part, {
808
- refkey: rk1
950
+ return [_$createComponent(py.VariableDeclaration, {
951
+ name: "test1",
952
+ refkey: rk1,
953
+ initializer: 1
809
954
  }, {
810
955
  fileName: import.meta.url,
811
- lineNumber: 343,
812
- columnNumber: 13
813
- }), _$createComponent(py.MemberExpression.Part, {
814
- refkey: rk2
956
+ lineNumber: 375,
957
+ columnNumber: 11
958
+ }), _$createComponent(py.VariableDeclaration, {
959
+ name: "test1",
960
+ refkey: rk2,
961
+ initializer: 2
815
962
  }, {
816
963
  fileName: import.meta.url,
817
- lineNumber: 344,
818
- columnNumber: 13
964
+ lineNumber: 376,
965
+ columnNumber: 11
966
+ }), _$createComponent(py.MemberExpression, {
967
+ get children() {
968
+ return [_$createComponent(py.MemberExpression.Part, {
969
+ refkey: rk1
970
+ }, {
971
+ fileName: import.meta.url,
972
+ lineNumber: 378,
973
+ columnNumber: 13
974
+ }), _$createComponent(py.MemberExpression.Part, {
975
+ refkey: rk2
976
+ }, {
977
+ fileName: import.meta.url,
978
+ lineNumber: 379,
979
+ columnNumber: 13
980
+ })];
981
+ }
982
+ }, {
983
+ fileName: import.meta.url,
984
+ lineNumber: 377,
985
+ columnNumber: 11
819
986
  })];
820
987
  }
821
988
  }, {
822
989
  fileName: import.meta.url,
823
- lineNumber: 342,
824
- columnNumber: 11
825
- })];
990
+ lineNumber: 374,
991
+ columnNumber: 9
992
+ });
826
993
  }
827
994
  }, {
828
995
  fileName: import.meta.url,
829
- lineNumber: 339,
830
- columnNumber: 9
831
- })])).toBe(d`
996
+ lineNumber: 373,
997
+ columnNumber: 7
998
+ })).toRenderTo(`
832
999
  test1 = 1
833
1000
  test1_2_test = 2
834
1001
  test1.test1_2_test
@@ -855,13 +1022,13 @@ describe("with refkeys", () => {
855
1022
  instanceVariable: true
856
1023
  }, {
857
1024
  fileName: import.meta.url,
858
- lineNumber: 365,
1025
+ lineNumber: 402,
859
1026
  columnNumber: 11
860
1027
  });
861
1028
  }
862
1029
  }, {
863
1030
  fileName: import.meta.url,
864
- lineNumber: 364,
1031
+ lineNumber: 401,
865
1032
  columnNumber: 9
866
1033
  }), _$createComponent(ClassDeclaration, {
867
1034
  name: "Model2",
@@ -875,13 +1042,13 @@ describe("with refkeys", () => {
875
1042
  instanceVariable: true
876
1043
  }, {
877
1044
  fileName: import.meta.url,
878
- lineNumber: 374,
1045
+ lineNumber: 411,
879
1046
  columnNumber: 11
880
1047
  });
881
1048
  }
882
1049
  }, {
883
1050
  fileName: import.meta.url,
884
- lineNumber: 373,
1051
+ lineNumber: 410,
885
1052
  columnNumber: 9
886
1053
  }), _$createComponent(py.VariableDeclaration, {
887
1054
  name: "model1_instance",
@@ -894,25 +1061,25 @@ describe("with refkeys", () => {
894
1061
  refkey: model1Ref
895
1062
  }, {
896
1063
  fileName: import.meta.url,
897
- lineNumber: 388,
1064
+ lineNumber: 425,
898
1065
  columnNumber: 15
899
1066
  }), _$createComponent(py.MemberExpression.Part, {
900
1067
  args: true
901
1068
  }, {
902
1069
  fileName: import.meta.url,
903
- lineNumber: 389,
1070
+ lineNumber: 426,
904
1071
  columnNumber: 15
905
1072
  })];
906
1073
  }
907
1074
  }, {
908
1075
  fileName: import.meta.url,
909
- lineNumber: 387,
1076
+ lineNumber: 424,
910
1077
  columnNumber: 13
911
1078
  });
912
1079
  }
913
1080
  }, {
914
1081
  fileName: import.meta.url,
915
- lineNumber: 382,
1082
+ lineNumber: 419,
916
1083
  columnNumber: 9
917
1084
  }), _$createComponent(py.VariableDeclaration, {
918
1085
  name: "model2_instance",
@@ -925,34 +1092,40 @@ describe("with refkeys", () => {
925
1092
  refkey: model2Ref
926
1093
  }, {
927
1094
  fileName: import.meta.url,
928
- lineNumber: 399,
1095
+ lineNumber: 436,
929
1096
  columnNumber: 15
930
1097
  }), _$createComponent(py.MemberExpression.Part, {
931
1098
  args: true
932
1099
  }, {
933
1100
  fileName: import.meta.url,
934
- lineNumber: 400,
1101
+ lineNumber: 437,
935
1102
  columnNumber: 15
936
1103
  })];
937
1104
  }
938
1105
  }, {
939
1106
  fileName: import.meta.url,
940
- lineNumber: 398,
1107
+ lineNumber: 435,
941
1108
  columnNumber: 13
942
1109
  });
943
1110
  }
944
1111
  }, {
945
1112
  fileName: import.meta.url,
946
- lineNumber: 393,
1113
+ lineNumber: 430,
947
1114
  columnNumber: 9
948
1115
  }), [_$memo(() => memberRefkey(v1Rk, classMethod1Ref), false, "memberRefkey(\u2026)")], [_$memo(() => memberRefkey(v2Rk, classMethod2Ref), false, "memberRefkey(\u2026)")]];
949
1116
  }
950
1117
  }, {
951
1118
  fileName: import.meta.url,
952
- lineNumber: 363,
1119
+ lineNumber: 400,
953
1120
  columnNumber: 7
954
1121
  });
955
- expect(toSourceText([template])).toBe(d`
1122
+ expect(_$createComponent(TestOutput, {
1123
+ children: template
1124
+ }, {
1125
+ fileName: import.meta.url,
1126
+ lineNumber: 446,
1127
+ columnNumber: 12
1128
+ })).toRenderTo(`
956
1129
  class Model1:
957
1130
  foo: str
958
1131
 
@@ -990,13 +1163,13 @@ describe("with refkeys", () => {
990
1163
  omitNone: true
991
1164
  }, {
992
1165
  fileName: import.meta.url,
993
- lineNumber: 438,
1166
+ lineNumber: 477,
994
1167
  columnNumber: 11
995
1168
  });
996
1169
  }
997
1170
  }, {
998
1171
  fileName: import.meta.url,
999
- lineNumber: 437,
1172
+ lineNumber: 476,
1000
1173
  columnNumber: 9
1001
1174
  }), _$createComponent(FunctionDeclaration, {
1002
1175
  name: "fooFunction",
@@ -1014,46 +1187,52 @@ describe("with refkeys", () => {
1014
1187
  refkey: fooRef
1015
1188
  }, {
1016
1189
  fileName: import.meta.url,
1017
- lineNumber: 452,
1190
+ lineNumber: 491,
1018
1191
  columnNumber: 19
1019
1192
  }), _$createComponent(py.MemberExpression.Part, {
1020
1193
  id: "bar"
1021
1194
  }, {
1022
1195
  fileName: import.meta.url,
1023
- lineNumber: 453,
1196
+ lineNumber: 492,
1024
1197
  columnNumber: 19
1025
1198
  })];
1026
1199
  }
1027
1200
  }, {
1028
1201
  fileName: import.meta.url,
1029
- lineNumber: 451,
1202
+ lineNumber: 490,
1030
1203
  columnNumber: 17
1031
1204
  });
1032
1205
  }
1033
1206
  }, {
1034
1207
  fileName: import.meta.url,
1035
- lineNumber: 447,
1208
+ lineNumber: 486,
1036
1209
  columnNumber: 13
1037
1210
  }), ["print(", messageRef, ")"]];
1038
1211
  }
1039
1212
  }, {
1040
1213
  fileName: import.meta.url,
1041
- lineNumber: 446,
1214
+ lineNumber: 485,
1042
1215
  columnNumber: 11
1043
1216
  });
1044
1217
  }
1045
1218
  }, {
1046
1219
  fileName: import.meta.url,
1047
- lineNumber: 445,
1220
+ lineNumber: 484,
1048
1221
  columnNumber: 9
1049
1222
  })];
1050
1223
  }
1051
1224
  }, {
1052
1225
  fileName: import.meta.url,
1053
- lineNumber: 436,
1226
+ lineNumber: 475,
1054
1227
  columnNumber: 7
1055
1228
  });
1056
- expect(toSourceText([template])).toBe(d`
1229
+ expect(_$createComponent(TestOutput, {
1230
+ children: template
1231
+ }, {
1232
+ fileName: import.meta.url,
1233
+ lineNumber: 502,
1234
+ columnNumber: 12
1235
+ })).toRenderTo(`
1057
1236
  class Model:
1058
1237
  bar: str
1059
1238
 
@@ -1070,125 +1249,133 @@ describe("with refkeys", () => {
1070
1249
  const classMethodRefkey = refkey();
1071
1250
  const classMemberRefkey = refkey();
1072
1251
  const instanceRefkey = refkey();
1073
- expect(toSourceText([_$createComponent(py.StatementList, {
1252
+ expect(_$createComponent(TestOutput, {
1074
1253
  get children() {
1075
- return [_$createComponent(ClassDeclaration, {
1076
- name: "Bar",
1077
- refkey: interfaceRefkey,
1254
+ return _$createComponent(py.StatementList, {
1078
1255
  get children() {
1079
- return _$createComponent(VariableDeclaration, {
1080
- name: "prop1",
1081
- refkey: interfaceMemberRefkey,
1082
- type: "str",
1083
- omitNone: true
1256
+ return [_$createComponent(ClassDeclaration, {
1257
+ name: "Bar",
1258
+ refkey: interfaceRefkey,
1259
+ get children() {
1260
+ return _$createComponent(VariableDeclaration, {
1261
+ name: "prop1",
1262
+ refkey: interfaceMemberRefkey,
1263
+ type: "str",
1264
+ omitNone: true
1265
+ }, {
1266
+ fileName: import.meta.url,
1267
+ lineNumber: 526,
1268
+ columnNumber: 13
1269
+ });
1270
+ }
1084
1271
  }, {
1085
1272
  fileName: import.meta.url,
1086
- lineNumber: 485,
1087
- columnNumber: 13
1088
- });
1089
- }
1090
- }, {
1091
- fileName: import.meta.url,
1092
- lineNumber: 484,
1093
- columnNumber: 11
1094
- }), _$createComponent(ClassDeclaration, {
1095
- name: "Foo",
1096
- refkey: classRefkey,
1097
- get children() {
1098
- return [_$createComponent(VariableDeclaration, {
1099
- name: "test1",
1100
- refkey: classMemberRefkey,
1101
- type: interfaceRefkey
1102
- }, {
1103
- fileName: import.meta.url,
1104
- lineNumber: 493,
1105
- columnNumber: 13
1106
- }), _$createIntrinsic("br", {}, {
1107
- fileName: import.meta.url,
1108
- lineNumber: 498,
1109
- columnNumber: 13
1110
- }), _$createComponent(FunctionDeclaration, {
1111
- name: "testMethod",
1112
- parameters: [],
1113
- refkey: classMethodRefkey,
1114
- returnType: interfaceRefkey
1115
- }, {
1116
- fileName: import.meta.url,
1117
- lineNumber: 499,
1118
- columnNumber: 13
1119
- })];
1120
- }
1121
- }, {
1122
- fileName: import.meta.url,
1123
- lineNumber: 492,
1124
- columnNumber: 11
1125
- }), _$createComponent(py.VariableDeclaration, {
1126
- name: "inst",
1127
- refkey: instanceRefkey,
1128
- initializer: code`${classRefkey}()`
1129
- }, {
1130
- fileName: import.meta.url,
1131
- lineNumber: 506,
1132
- columnNumber: 11
1133
- }), _$createComponent(py.MemberExpression, {
1134
- get children() {
1135
- return [_$createComponent(py.MemberExpression.Part, {
1136
- refkey: instanceRefkey
1137
- }, {
1138
- fileName: import.meta.url,
1139
- lineNumber: 512,
1140
- columnNumber: 13
1141
- }), _$createComponent(py.MemberExpression.Part, {
1142
- refkey: classMemberRefkey
1143
- }, {
1144
- fileName: import.meta.url,
1145
- lineNumber: 513,
1146
- columnNumber: 13
1147
- }), _$createComponent(py.MemberExpression.Part, {
1148
- refkey: interfaceMemberRefkey
1273
+ lineNumber: 525,
1274
+ columnNumber: 11
1275
+ }), _$createComponent(ClassDeclaration, {
1276
+ name: "Foo",
1277
+ refkey: classRefkey,
1278
+ get children() {
1279
+ return [_$createComponent(VariableDeclaration, {
1280
+ name: "test1",
1281
+ refkey: classMemberRefkey,
1282
+ type: interfaceRefkey
1283
+ }, {
1284
+ fileName: import.meta.url,
1285
+ lineNumber: 534,
1286
+ columnNumber: 13
1287
+ }), _$createIntrinsic("br", {}, {
1288
+ fileName: import.meta.url,
1289
+ lineNumber: 539,
1290
+ columnNumber: 13
1291
+ }), _$createComponent(FunctionDeclaration, {
1292
+ name: "testMethod",
1293
+ parameters: [],
1294
+ refkey: classMethodRefkey,
1295
+ returnType: interfaceRefkey
1296
+ }, {
1297
+ fileName: import.meta.url,
1298
+ lineNumber: 540,
1299
+ columnNumber: 13
1300
+ })];
1301
+ }
1149
1302
  }, {
1150
1303
  fileName: import.meta.url,
1151
- lineNumber: 514,
1152
- columnNumber: 13
1153
- })];
1154
- }
1155
- }, {
1156
- fileName: import.meta.url,
1157
- lineNumber: 511,
1158
- columnNumber: 11
1159
- }), _$createComponent(py.MemberExpression, {
1160
- get children() {
1161
- return [_$createComponent(py.MemberExpression.Part, {
1162
- refkey: instanceRefkey
1304
+ lineNumber: 533,
1305
+ columnNumber: 11
1306
+ }), _$createComponent(py.VariableDeclaration, {
1307
+ name: "inst",
1308
+ refkey: instanceRefkey,
1309
+ initializer: code`${classRefkey}()`
1163
1310
  }, {
1164
1311
  fileName: import.meta.url,
1165
- lineNumber: 517,
1166
- columnNumber: 13
1167
- }), _$createComponent(py.MemberExpression.Part, {
1168
- refkey: classMethodRefkey
1312
+ lineNumber: 547,
1313
+ columnNumber: 11
1314
+ }), _$createComponent(py.MemberExpression, {
1315
+ get children() {
1316
+ return [_$createComponent(py.MemberExpression.Part, {
1317
+ refkey: instanceRefkey
1318
+ }, {
1319
+ fileName: import.meta.url,
1320
+ lineNumber: 553,
1321
+ columnNumber: 13
1322
+ }), _$createComponent(py.MemberExpression.Part, {
1323
+ refkey: classMemberRefkey
1324
+ }, {
1325
+ fileName: import.meta.url,
1326
+ lineNumber: 554,
1327
+ columnNumber: 13
1328
+ }), _$createComponent(py.MemberExpression.Part, {
1329
+ refkey: interfaceMemberRefkey
1330
+ }, {
1331
+ fileName: import.meta.url,
1332
+ lineNumber: 555,
1333
+ columnNumber: 13
1334
+ })];
1335
+ }
1169
1336
  }, {
1170
1337
  fileName: import.meta.url,
1171
- lineNumber: 518,
1172
- columnNumber: 13
1173
- }), _$createComponent(py.MemberExpression.Part, {
1174
- args: []
1338
+ lineNumber: 552,
1339
+ columnNumber: 11
1340
+ }), _$createComponent(py.MemberExpression, {
1341
+ get children() {
1342
+ return [_$createComponent(py.MemberExpression.Part, {
1343
+ refkey: instanceRefkey
1344
+ }, {
1345
+ fileName: import.meta.url,
1346
+ lineNumber: 558,
1347
+ columnNumber: 13
1348
+ }), _$createComponent(py.MemberExpression.Part, {
1349
+ refkey: classMethodRefkey
1350
+ }, {
1351
+ fileName: import.meta.url,
1352
+ lineNumber: 559,
1353
+ columnNumber: 13
1354
+ }), _$createComponent(py.MemberExpression.Part, {
1355
+ args: []
1356
+ }, {
1357
+ fileName: import.meta.url,
1358
+ lineNumber: 560,
1359
+ columnNumber: 13
1360
+ })];
1361
+ }
1175
1362
  }, {
1176
1363
  fileName: import.meta.url,
1177
- lineNumber: 519,
1178
- columnNumber: 13
1364
+ lineNumber: 557,
1365
+ columnNumber: 11
1179
1366
  })];
1180
1367
  }
1181
1368
  }, {
1182
1369
  fileName: import.meta.url,
1183
- lineNumber: 516,
1184
- columnNumber: 11
1185
- })];
1370
+ lineNumber: 524,
1371
+ columnNumber: 9
1372
+ });
1186
1373
  }
1187
1374
  }, {
1188
1375
  fileName: import.meta.url,
1189
- lineNumber: 483,
1190
- columnNumber: 9
1191
- })])).toBe(d`
1376
+ lineNumber: 523,
1377
+ columnNumber: 7
1378
+ })).toRenderTo(`
1192
1379
  class Bar:
1193
1380
  prop1: str
1194
1381
 
@@ -1206,51 +1393,59 @@ describe("with refkeys", () => {
1206
1393
  it("handles late resolved refkeys correctly", () => {
1207
1394
  const rk1 = refkey();
1208
1395
  const rk2 = refkey();
1209
- expect(toSourceText([_$createComponent(py.StatementList, {
1396
+ expect(_$createComponent(TestOutput, {
1210
1397
  get children() {
1211
- return [_$createComponent(py.MemberExpression, {
1398
+ return _$createComponent(py.StatementList, {
1212
1399
  get children() {
1213
- return [_$createComponent(py.MemberExpression.Part, {
1214
- refkey: rk1
1400
+ return [_$createComponent(py.MemberExpression, {
1401
+ get children() {
1402
+ return [_$createComponent(py.MemberExpression.Part, {
1403
+ refkey: rk1
1404
+ }, {
1405
+ fileName: import.meta.url,
1406
+ lineNumber: 589,
1407
+ columnNumber: 13
1408
+ }), _$createComponent(py.MemberExpression.Part, {
1409
+ refkey: rk2
1410
+ }, {
1411
+ fileName: import.meta.url,
1412
+ lineNumber: 590,
1413
+ columnNumber: 13
1414
+ })];
1415
+ }
1215
1416
  }, {
1216
1417
  fileName: import.meta.url,
1217
- lineNumber: 546,
1218
- columnNumber: 13
1219
- }), _$createComponent(py.MemberExpression.Part, {
1220
- refkey: rk2
1418
+ lineNumber: 588,
1419
+ columnNumber: 11
1420
+ }), _$createComponent(py.VariableDeclaration, {
1421
+ name: "test1",
1422
+ refkey: rk1,
1423
+ initializer: 1
1221
1424
  }, {
1222
1425
  fileName: import.meta.url,
1223
- lineNumber: 547,
1224
- columnNumber: 13
1426
+ lineNumber: 592,
1427
+ columnNumber: 11
1428
+ }), _$createComponent(py.VariableDeclaration, {
1429
+ name: "test1",
1430
+ refkey: rk2,
1431
+ initializer: 2
1432
+ }, {
1433
+ fileName: import.meta.url,
1434
+ lineNumber: 593,
1435
+ columnNumber: 11
1225
1436
  })];
1226
1437
  }
1227
1438
  }, {
1228
1439
  fileName: import.meta.url,
1229
- lineNumber: 545,
1230
- columnNumber: 11
1231
- }), _$createComponent(py.VariableDeclaration, {
1232
- name: "test1",
1233
- refkey: rk1,
1234
- initializer: 1
1235
- }, {
1236
- fileName: import.meta.url,
1237
- lineNumber: 549,
1238
- columnNumber: 11
1239
- }), _$createComponent(py.VariableDeclaration, {
1240
- name: "test1",
1241
- refkey: rk2,
1242
- initializer: 2
1243
- }, {
1244
- fileName: import.meta.url,
1245
- lineNumber: 550,
1246
- columnNumber: 11
1247
- })];
1440
+ lineNumber: 587,
1441
+ columnNumber: 9
1442
+ });
1248
1443
  }
1249
1444
  }, {
1250
1445
  fileName: import.meta.url,
1251
- lineNumber: 544,
1252
- columnNumber: 9
1253
- })])).toBe(d`
1446
+ lineNumber: 586,
1447
+ columnNumber: 7
1448
+ })).toRenderTo(`
1254
1449
  test1.test1_2_test
1255
1450
  test1 = 1
1256
1451
  test1_2_test = 2
@@ -1258,256 +1453,304 @@ describe("with refkeys", () => {
1258
1453
  });
1259
1454
  it("creates a full reference to the first refkey", () => {
1260
1455
  const rk1 = refkey();
1261
- const res = toSourceTextMultiple([_$createComponent(SourceFile, {
1262
- path: "source.py",
1456
+ expect(_$createComponent(TestOutputDirectory, {
1263
1457
  get children() {
1264
- return _$createComponent(py.VariableDeclaration, {
1265
- name: "importMe",
1266
- refkey: rk1
1458
+ return [_$createComponent(SourceFile, {
1459
+ path: "source.py",
1460
+ get children() {
1461
+ return _$createComponent(py.VariableDeclaration, {
1462
+ name: "importMe",
1463
+ refkey: rk1
1464
+ }, {
1465
+ fileName: import.meta.url,
1466
+ lineNumber: 610,
1467
+ columnNumber: 11
1468
+ });
1469
+ }
1267
1470
  }, {
1268
1471
  fileName: import.meta.url,
1269
- lineNumber: 564,
1472
+ lineNumber: 609,
1270
1473
  columnNumber: 9
1271
- });
1272
- }
1273
- }, {
1274
- fileName: import.meta.url,
1275
- lineNumber: 563,
1276
- columnNumber: 7
1277
- }), _$createComponent(SourceFile, {
1278
- path: "index.py",
1279
- get children() {
1280
- return _$createComponent(py.StatementList, {
1474
+ }), _$createComponent(SourceFile, {
1475
+ path: "index.py",
1281
1476
  get children() {
1282
- return _$createComponent(py.MemberExpression, {
1477
+ return _$createComponent(py.StatementList, {
1283
1478
  get children() {
1284
- return [_$createComponent(py.MemberExpression.Part, {
1285
- refkey: rk1
1286
- }, {
1287
- fileName: import.meta.url,
1288
- lineNumber: 569,
1289
- columnNumber: 13
1290
- }), _$createComponent(py.MemberExpression.Part, {
1291
- id: "foo"
1479
+ return _$createComponent(py.MemberExpression, {
1480
+ get children() {
1481
+ return [_$createComponent(py.MemberExpression.Part, {
1482
+ refkey: rk1
1483
+ }, {
1484
+ fileName: import.meta.url,
1485
+ lineNumber: 615,
1486
+ columnNumber: 15
1487
+ }), _$createComponent(py.MemberExpression.Part, {
1488
+ id: "foo"
1489
+ }, {
1490
+ fileName: import.meta.url,
1491
+ lineNumber: 616,
1492
+ columnNumber: 15
1493
+ })];
1494
+ }
1292
1495
  }, {
1293
1496
  fileName: import.meta.url,
1294
- lineNumber: 570,
1497
+ lineNumber: 614,
1295
1498
  columnNumber: 13
1296
- })];
1499
+ });
1297
1500
  }
1298
1501
  }, {
1299
1502
  fileName: import.meta.url,
1300
- lineNumber: 568,
1503
+ lineNumber: 613,
1301
1504
  columnNumber: 11
1302
1505
  });
1303
1506
  }
1304
1507
  }, {
1305
1508
  fileName: import.meta.url,
1306
- lineNumber: 567,
1509
+ lineNumber: 612,
1307
1510
  columnNumber: 9
1308
- });
1511
+ })];
1309
1512
  }
1310
1513
  }, {
1311
1514
  fileName: import.meta.url,
1312
- lineNumber: 566,
1515
+ lineNumber: 608,
1313
1516
  columnNumber: 7
1314
- })]);
1315
- assertFileContents(res, {
1316
- "index.py": d`
1317
- from source import import_me
1517
+ })).toRenderTo({
1518
+ "index.py": `
1519
+ from source import import_me
1318
1520
 
1319
- import_me.foo
1320
- `
1521
+ import_me.foo
1522
+ `,
1523
+ "source.py": "import_me = None"
1321
1524
  });
1322
1525
  });
1323
1526
  });
1324
1527
  describe("with function calls", () => {
1325
1528
  it("handles simple function calls correctly", () => {
1326
- expect(toSourceText([_$createComponent(py.MemberExpression, {
1529
+ expect(_$createComponent(TestOutput, {
1327
1530
  get children() {
1328
- return [_$createComponent(py.MemberExpression.Part, {
1329
- id: "myFunction"
1330
- }, {
1331
- fileName: import.meta.url,
1332
- lineNumber: 591,
1333
- columnNumber: 11
1334
- }), _$createComponent(py.MemberExpression.Part, {
1335
- args: [1, 2]
1531
+ return _$createComponent(py.MemberExpression, {
1532
+ get children() {
1533
+ return [_$createComponent(py.MemberExpression.Part, {
1534
+ id: "myFunction"
1535
+ }, {
1536
+ fileName: import.meta.url,
1537
+ lineNumber: 637,
1538
+ columnNumber: 11
1539
+ }), _$createComponent(py.MemberExpression.Part, {
1540
+ args: [1, 2]
1541
+ }, {
1542
+ fileName: import.meta.url,
1543
+ lineNumber: 638,
1544
+ columnNumber: 11
1545
+ })];
1546
+ }
1336
1547
  }, {
1337
1548
  fileName: import.meta.url,
1338
- lineNumber: 592,
1339
- columnNumber: 11
1340
- })];
1549
+ lineNumber: 636,
1550
+ columnNumber: 9
1551
+ });
1341
1552
  }
1342
1553
  }, {
1343
1554
  fileName: import.meta.url,
1344
- lineNumber: 590,
1345
- columnNumber: 9
1346
- })])).toBe(d`
1555
+ lineNumber: 635,
1556
+ columnNumber: 7
1557
+ })).toRenderTo(`
1347
1558
  myFunction(1, 2)
1348
1559
  `);
1349
1560
  });
1350
1561
  it("handles function calls with references correctly", () => {
1351
1562
  const xRefkey = refkey();
1352
1563
  const yRefkey = refkey();
1353
- expect(toSourceText([_$createComponent(py.StatementList, {
1564
+ expect(_$createComponent(TestOutput, {
1354
1565
  get children() {
1355
- return [_$createComponent(py.VariableDeclaration, {
1356
- name: "x",
1357
- initializer: 1,
1358
- refkey: xRefkey
1359
- }, {
1360
- fileName: import.meta.url,
1361
- lineNumber: 606,
1362
- columnNumber: 11
1363
- }), _$createComponent(py.VariableDeclaration, {
1364
- name: "y",
1365
- initializer: 2,
1366
- refkey: yRefkey
1367
- }, {
1368
- fileName: import.meta.url,
1369
- lineNumber: 607,
1370
- columnNumber: 11
1371
- }), _$createComponent(py.MemberExpression, {
1566
+ return _$createComponent(py.StatementList, {
1372
1567
  get children() {
1373
- return [_$createComponent(py.MemberExpression.Part, {
1374
- id: "myFunction"
1568
+ return [_$createComponent(py.VariableDeclaration, {
1569
+ name: "x",
1570
+ initializer: 1,
1571
+ refkey: xRefkey
1375
1572
  }, {
1376
1573
  fileName: import.meta.url,
1377
- lineNumber: 609,
1378
- columnNumber: 13
1379
- }), _$createComponent(py.MemberExpression.Part, {
1380
- args: [xRefkey, yRefkey]
1574
+ lineNumber: 654,
1575
+ columnNumber: 11
1576
+ }), _$createComponent(py.VariableDeclaration, {
1577
+ name: "y",
1578
+ initializer: 2,
1579
+ refkey: yRefkey
1381
1580
  }, {
1382
1581
  fileName: import.meta.url,
1383
- lineNumber: 610,
1384
- columnNumber: 13
1582
+ lineNumber: 655,
1583
+ columnNumber: 11
1584
+ }), _$createComponent(py.MemberExpression, {
1585
+ get children() {
1586
+ return [_$createComponent(py.MemberExpression.Part, {
1587
+ id: "myFunction"
1588
+ }, {
1589
+ fileName: import.meta.url,
1590
+ lineNumber: 657,
1591
+ columnNumber: 13
1592
+ }), _$createComponent(py.MemberExpression.Part, {
1593
+ args: [xRefkey, yRefkey]
1594
+ }, {
1595
+ fileName: import.meta.url,
1596
+ lineNumber: 658,
1597
+ columnNumber: 13
1598
+ })];
1599
+ }
1600
+ }, {
1601
+ fileName: import.meta.url,
1602
+ lineNumber: 656,
1603
+ columnNumber: 11
1385
1604
  })];
1386
1605
  }
1387
1606
  }, {
1388
1607
  fileName: import.meta.url,
1389
- lineNumber: 608,
1390
- columnNumber: 11
1391
- })];
1608
+ lineNumber: 653,
1609
+ columnNumber: 9
1610
+ });
1392
1611
  }
1393
1612
  }, {
1394
1613
  fileName: import.meta.url,
1395
- lineNumber: 605,
1396
- columnNumber: 9
1397
- })])).toBe(d`
1614
+ lineNumber: 652,
1615
+ columnNumber: 7
1616
+ })).toRenderTo(`
1398
1617
  x = 1
1399
1618
  y = 2
1400
1619
  myFunction(x, y)
1401
1620
  `);
1402
1621
  });
1403
1622
  it("handles method calls correctly", () => {
1404
- expect(toSourceText([_$createComponent(py.MemberExpression, {
1623
+ expect(_$createComponent(TestOutput, {
1405
1624
  get children() {
1406
- return [_$createComponent(py.MemberExpression.Part, {
1407
- id: "method1"
1408
- }, {
1409
- fileName: import.meta.url,
1410
- lineNumber: 625,
1411
- columnNumber: 11
1412
- }), _$createComponent(py.MemberExpression.Part, {
1413
- args: [1, 2]
1414
- }, {
1415
- fileName: import.meta.url,
1416
- lineNumber: 626,
1417
- columnNumber: 11
1418
- }), _$createComponent(py.MemberExpression.Part, {
1419
- args: []
1420
- }, {
1421
- fileName: import.meta.url,
1422
- lineNumber: 627,
1423
- columnNumber: 11
1424
- }), _$createComponent(py.MemberExpression.Part, {
1425
- id: "method2"
1426
- }, {
1427
- fileName: import.meta.url,
1428
- lineNumber: 628,
1429
- columnNumber: 11
1430
- }), _$createComponent(py.MemberExpression.Part, {
1431
- args: []
1432
- }, {
1433
- fileName: import.meta.url,
1434
- lineNumber: 629,
1435
- columnNumber: 11
1436
- }), _$createComponent(py.MemberExpression.Part, {
1437
- id: "prop"
1625
+ return _$createComponent(py.MemberExpression, {
1626
+ get children() {
1627
+ return [_$createComponent(py.MemberExpression.Part, {
1628
+ id: "method1"
1629
+ }, {
1630
+ fileName: import.meta.url,
1631
+ lineNumber: 675,
1632
+ columnNumber: 11
1633
+ }), _$createComponent(py.MemberExpression.Part, {
1634
+ args: [1, 2]
1635
+ }, {
1636
+ fileName: import.meta.url,
1637
+ lineNumber: 676,
1638
+ columnNumber: 11
1639
+ }), _$createComponent(py.MemberExpression.Part, {
1640
+ args: []
1641
+ }, {
1642
+ fileName: import.meta.url,
1643
+ lineNumber: 677,
1644
+ columnNumber: 11
1645
+ }), _$createComponent(py.MemberExpression.Part, {
1646
+ id: "method2"
1647
+ }, {
1648
+ fileName: import.meta.url,
1649
+ lineNumber: 678,
1650
+ columnNumber: 11
1651
+ }), _$createComponent(py.MemberExpression.Part, {
1652
+ args: []
1653
+ }, {
1654
+ fileName: import.meta.url,
1655
+ lineNumber: 679,
1656
+ columnNumber: 11
1657
+ }), _$createComponent(py.MemberExpression.Part, {
1658
+ id: "prop"
1659
+ }, {
1660
+ fileName: import.meta.url,
1661
+ lineNumber: 680,
1662
+ columnNumber: 11
1663
+ })];
1664
+ }
1438
1665
  }, {
1439
1666
  fileName: import.meta.url,
1440
- lineNumber: 630,
1441
- columnNumber: 11
1442
- })];
1667
+ lineNumber: 674,
1668
+ columnNumber: 9
1669
+ });
1443
1670
  }
1444
1671
  }, {
1445
1672
  fileName: import.meta.url,
1446
- lineNumber: 624,
1447
- columnNumber: 9
1448
- })])).toBe(d`
1673
+ lineNumber: 673,
1674
+ columnNumber: 7
1675
+ })).toRenderTo(`
1449
1676
  method1(1, 2)().method2().prop
1450
1677
  `);
1451
1678
  });
1452
1679
  it("handles function calls correctly", () => {
1453
- expect(toSourceText([_$createComponent(py.MemberExpression, {
1680
+ expect(_$createComponent(TestOutput, {
1454
1681
  get children() {
1455
- return [_$createComponent(py.MemberExpression.Part, {
1456
- id: "myFunction"
1457
- }, {
1458
- fileName: import.meta.url,
1459
- lineNumber: 642,
1460
- columnNumber: 11
1461
- }), _$createComponent(py.MemberExpression.Part, {
1462
- args: [1, 2]
1463
- }, {
1464
- fileName: import.meta.url,
1465
- lineNumber: 643,
1466
- columnNumber: 11
1467
- }), _$createComponent(py.MemberExpression.Part, {
1468
- id: "prop"
1682
+ return _$createComponent(py.MemberExpression, {
1683
+ get children() {
1684
+ return [_$createComponent(py.MemberExpression.Part, {
1685
+ id: "myFunction"
1686
+ }, {
1687
+ fileName: import.meta.url,
1688
+ lineNumber: 694,
1689
+ columnNumber: 11
1690
+ }), _$createComponent(py.MemberExpression.Part, {
1691
+ args: [1, 2]
1692
+ }, {
1693
+ fileName: import.meta.url,
1694
+ lineNumber: 695,
1695
+ columnNumber: 11
1696
+ }), _$createComponent(py.MemberExpression.Part, {
1697
+ id: "prop"
1698
+ }, {
1699
+ fileName: import.meta.url,
1700
+ lineNumber: 696,
1701
+ columnNumber: 11
1702
+ })];
1703
+ }
1469
1704
  }, {
1470
1705
  fileName: import.meta.url,
1471
- lineNumber: 644,
1472
- columnNumber: 11
1473
- })];
1706
+ lineNumber: 693,
1707
+ columnNumber: 9
1708
+ });
1474
1709
  }
1475
1710
  }, {
1476
1711
  fileName: import.meta.url,
1477
- lineNumber: 641,
1478
- columnNumber: 9
1479
- })])).toBe(d`
1712
+ lineNumber: 692,
1713
+ columnNumber: 7
1714
+ })).toRenderTo(`
1480
1715
  myFunction(1, 2).prop
1481
1716
  `);
1482
1717
  });
1483
1718
  it("handles function calls correctly", () => {
1484
- expect(toSourceText([_$createComponent(py.MemberExpression, {
1719
+ expect(_$createComponent(TestOutput, {
1485
1720
  get children() {
1486
- return [_$createComponent(py.MemberExpression.Part, {
1487
- id: "myFunction"
1488
- }, {
1489
- fileName: import.meta.url,
1490
- lineNumber: 656,
1491
- columnNumber: 11
1492
- }), _$createComponent(py.MemberExpression.Part, {
1493
- args: [1, 2]
1494
- }, {
1495
- fileName: import.meta.url,
1496
- lineNumber: 657,
1497
- columnNumber: 11
1498
- }), _$createComponent(py.MemberExpression.Part, {
1499
- id: "prop"
1721
+ return _$createComponent(py.MemberExpression, {
1722
+ get children() {
1723
+ return [_$createComponent(py.MemberExpression.Part, {
1724
+ id: "myFunction"
1725
+ }, {
1726
+ fileName: import.meta.url,
1727
+ lineNumber: 710,
1728
+ columnNumber: 11
1729
+ }), _$createComponent(py.MemberExpression.Part, {
1730
+ args: [1, 2]
1731
+ }, {
1732
+ fileName: import.meta.url,
1733
+ lineNumber: 711,
1734
+ columnNumber: 11
1735
+ }), _$createComponent(py.MemberExpression.Part, {
1736
+ id: "prop"
1737
+ }, {
1738
+ fileName: import.meta.url,
1739
+ lineNumber: 712,
1740
+ columnNumber: 11
1741
+ })];
1742
+ }
1500
1743
  }, {
1501
1744
  fileName: import.meta.url,
1502
- lineNumber: 658,
1503
- columnNumber: 11
1504
- })];
1745
+ lineNumber: 709,
1746
+ columnNumber: 9
1747
+ });
1505
1748
  }
1506
1749
  }, {
1507
1750
  fileName: import.meta.url,
1508
- lineNumber: 655,
1509
- columnNumber: 9
1510
- })])).toBe(d`
1751
+ lineNumber: 708,
1752
+ columnNumber: 7
1753
+ })).toRenderTo(`
1511
1754
  myFunction(1, 2).prop
1512
1755
  `);
1513
1756
  });
@@ -1515,151 +1758,173 @@ describe("with function calls", () => {
1515
1758
  describe("formatting", () => {
1516
1759
  describe("simple chains", () => {
1517
1760
  it("just dots", () => {
1518
- expect(toSourceText([_$createComponent(py.MemberExpression, {
1761
+ expect(_$createComponent(TestOutput, {
1519
1762
  get children() {
1520
- return [_$createComponent(py.MemberExpression.Part, {
1521
- id: "four"
1522
- }, {
1523
- fileName: import.meta.url,
1524
- lineNumber: 674,
1525
- columnNumber: 15
1526
- }), _$createComponent(py.MemberExpression.Part, {
1527
- id: "four"
1528
- }, {
1529
- fileName: import.meta.url,
1530
- lineNumber: 675,
1531
- columnNumber: 15
1532
- }), _$createComponent(py.MemberExpression.Part, {
1533
- id: "two"
1534
- }, {
1535
- fileName: import.meta.url,
1536
- lineNumber: 676,
1537
- columnNumber: 15
1538
- }), _$createComponent(py.MemberExpression.Part, {
1539
- id: "two"
1540
- }, {
1541
- fileName: import.meta.url,
1542
- lineNumber: 677,
1543
- columnNumber: 15
1544
- }), _$createComponent(py.MemberExpression.Part, {
1545
- id: "two"
1546
- }, {
1547
- fileName: import.meta.url,
1548
- lineNumber: 678,
1549
- columnNumber: 15
1550
- }), _$createComponent(py.MemberExpression.Part, {
1551
- id: "two"
1763
+ return _$createComponent(py.MemberExpression, {
1764
+ get children() {
1765
+ return [_$createComponent(py.MemberExpression.Part, {
1766
+ id: "four"
1767
+ }, {
1768
+ fileName: import.meta.url,
1769
+ lineNumber: 729,
1770
+ columnNumber: 13
1771
+ }), _$createComponent(py.MemberExpression.Part, {
1772
+ id: "four"
1773
+ }, {
1774
+ fileName: import.meta.url,
1775
+ lineNumber: 730,
1776
+ columnNumber: 13
1777
+ }), _$createComponent(py.MemberExpression.Part, {
1778
+ id: "two"
1779
+ }, {
1780
+ fileName: import.meta.url,
1781
+ lineNumber: 731,
1782
+ columnNumber: 13
1783
+ }), _$createComponent(py.MemberExpression.Part, {
1784
+ id: "two"
1785
+ }, {
1786
+ fileName: import.meta.url,
1787
+ lineNumber: 732,
1788
+ columnNumber: 13
1789
+ }), _$createComponent(py.MemberExpression.Part, {
1790
+ id: "two"
1791
+ }, {
1792
+ fileName: import.meta.url,
1793
+ lineNumber: 733,
1794
+ columnNumber: 13
1795
+ }), _$createComponent(py.MemberExpression.Part, {
1796
+ id: "two"
1797
+ }, {
1798
+ fileName: import.meta.url,
1799
+ lineNumber: 734,
1800
+ columnNumber: 13
1801
+ })];
1802
+ }
1552
1803
  }, {
1553
1804
  fileName: import.meta.url,
1554
- lineNumber: 679,
1555
- columnNumber: 15
1556
- })];
1805
+ lineNumber: 728,
1806
+ columnNumber: 11
1807
+ });
1557
1808
  }
1558
1809
  }, {
1559
1810
  fileName: import.meta.url,
1560
- lineNumber: 673,
1561
- columnNumber: 13
1562
- })], {
1563
- printOptions: {
1564
- printWidth: 14
1565
- }
1566
- })).toBe(d`
1811
+ lineNumber: 727,
1812
+ columnNumber: 9
1813
+ })).toRenderTo(`
1567
1814
  four.four \\
1568
1815
  .two.two \\
1569
1816
  .two.two
1570
- `);
1817
+ `, {
1818
+ tabWidth: 4,
1819
+ printWidth: 14
1820
+ });
1571
1821
  });
1572
1822
  it("bracket breaks", () => {
1573
- expect(toSourceText([_$createComponent(py.MemberExpression, {
1823
+ expect(_$createComponent(TestOutput, {
1574
1824
  get children() {
1575
- return [_$createComponent(py.MemberExpression.Part, {
1576
- id: "obj"
1577
- }, {
1578
- fileName: import.meta.url,
1579
- lineNumber: 696,
1580
- columnNumber: 15
1581
- }), _$createComponent(py.MemberExpression.Part, {
1582
- key: "property-name"
1583
- }, {
1584
- fileName: import.meta.url,
1585
- lineNumber: 697,
1586
- columnNumber: 15
1587
- }), _$createComponent(py.MemberExpression.Part, {
1588
- id: "prop"
1825
+ return _$createComponent(py.MemberExpression, {
1826
+ get children() {
1827
+ return [_$createComponent(py.MemberExpression.Part, {
1828
+ id: "obj"
1829
+ }, {
1830
+ fileName: import.meta.url,
1831
+ lineNumber: 751,
1832
+ columnNumber: 13
1833
+ }), _$createComponent(py.MemberExpression.Part, {
1834
+ key: "property-name"
1835
+ }, {
1836
+ fileName: import.meta.url,
1837
+ lineNumber: 752,
1838
+ columnNumber: 13
1839
+ }), _$createComponent(py.MemberExpression.Part, {
1840
+ id: "prop"
1841
+ }, {
1842
+ fileName: import.meta.url,
1843
+ lineNumber: 753,
1844
+ columnNumber: 13
1845
+ })];
1846
+ }
1589
1847
  }, {
1590
1848
  fileName: import.meta.url,
1591
- lineNumber: 698,
1592
- columnNumber: 15
1593
- })];
1849
+ lineNumber: 750,
1850
+ columnNumber: 11
1851
+ });
1594
1852
  }
1595
1853
  }, {
1596
1854
  fileName: import.meta.url,
1597
- lineNumber: 695,
1598
- columnNumber: 13
1599
- })], {
1600
- printOptions: {
1601
- printWidth: 12
1602
- }
1603
- })).toBe(d`
1855
+ lineNumber: 749,
1856
+ columnNumber: 9
1857
+ })).toRenderTo(`
1604
1858
  obj[
1605
1859
  "property-name"
1606
1860
  ].prop
1607
- `);
1861
+ `, {
1862
+ tabWidth: 4,
1863
+ printWidth: 12
1864
+ });
1608
1865
  });
1609
1866
  });
1610
1867
  describe("call chains", () => {
1611
1868
  it("renders multiple calls on the same line when there are no breaks and they fit", () => {
1612
- expect(toSourceText([_$createComponent(py.MemberExpression, {
1869
+ expect(_$createComponent(TestOutput, {
1613
1870
  get children() {
1614
- return [_$createComponent(py.MemberExpression.Part, {
1615
- id: "z"
1616
- }, {
1617
- fileName: import.meta.url,
1618
- lineNumber: 716,
1619
- columnNumber: 13
1620
- }), _$createComponent(py.MemberExpression.Part, {
1621
- id: "object"
1622
- }, {
1623
- fileName: import.meta.url,
1624
- lineNumber: 717,
1625
- columnNumber: 13
1626
- }), _$createComponent(py.MemberExpression.Part, {
1627
- args: true
1628
- }, {
1629
- fileName: import.meta.url,
1630
- lineNumber: 718,
1631
- columnNumber: 13
1632
- }), _$createComponent(py.MemberExpression.Part, {
1633
- id: "partial"
1634
- }, {
1635
- fileName: import.meta.url,
1636
- lineNumber: 719,
1637
- columnNumber: 13
1638
- }), _$createComponent(py.MemberExpression.Part, {
1639
- args: true
1640
- }, {
1641
- fileName: import.meta.url,
1642
- lineNumber: 720,
1643
- columnNumber: 13
1644
- }), _$createComponent(py.MemberExpression.Part, {
1645
- id: "optional"
1646
- }, {
1647
- fileName: import.meta.url,
1648
- lineNumber: 721,
1649
- columnNumber: 13
1650
- }), _$createComponent(py.MemberExpression.Part, {
1651
- args: true
1871
+ return _$createComponent(py.MemberExpression, {
1872
+ get children() {
1873
+ return [_$createComponent(py.MemberExpression.Part, {
1874
+ id: "z"
1875
+ }, {
1876
+ fileName: import.meta.url,
1877
+ lineNumber: 772,
1878
+ columnNumber: 13
1879
+ }), _$createComponent(py.MemberExpression.Part, {
1880
+ id: "object"
1881
+ }, {
1882
+ fileName: import.meta.url,
1883
+ lineNumber: 773,
1884
+ columnNumber: 13
1885
+ }), _$createComponent(py.MemberExpression.Part, {
1886
+ args: true
1887
+ }, {
1888
+ fileName: import.meta.url,
1889
+ lineNumber: 774,
1890
+ columnNumber: 13
1891
+ }), _$createComponent(py.MemberExpression.Part, {
1892
+ id: "partial"
1893
+ }, {
1894
+ fileName: import.meta.url,
1895
+ lineNumber: 775,
1896
+ columnNumber: 13
1897
+ }), _$createComponent(py.MemberExpression.Part, {
1898
+ args: true
1899
+ }, {
1900
+ fileName: import.meta.url,
1901
+ lineNumber: 776,
1902
+ columnNumber: 13
1903
+ }), _$createComponent(py.MemberExpression.Part, {
1904
+ id: "optional"
1905
+ }, {
1906
+ fileName: import.meta.url,
1907
+ lineNumber: 777,
1908
+ columnNumber: 13
1909
+ }), _$createComponent(py.MemberExpression.Part, {
1910
+ args: true
1911
+ }, {
1912
+ fileName: import.meta.url,
1913
+ lineNumber: 778,
1914
+ columnNumber: 13
1915
+ })];
1916
+ }
1652
1917
  }, {
1653
1918
  fileName: import.meta.url,
1654
- lineNumber: 722,
1655
- columnNumber: 13
1656
- })];
1919
+ lineNumber: 771,
1920
+ columnNumber: 11
1921
+ });
1657
1922
  }
1658
1923
  }, {
1659
1924
  fileName: import.meta.url,
1660
- lineNumber: 715,
1661
- columnNumber: 11
1662
- })])).toBe(d`
1925
+ lineNumber: 770,
1926
+ columnNumber: 9
1927
+ })).toRenderTo(`
1663
1928
  z.object().partial().optional()
1664
1929
  `);
1665
1930
  });