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

Side by Side Diff: pkg/analyzer/lib/src/summary/idl.dart

Issue 1859723002: Support for serializing prefix/postfix increment/decrement. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « pkg/analyzer/lib/src/summary/format.fbs ('k') | pkg/analyzer/lib/src/summary/resynthesize.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 /** 5 /**
6 * This file is an "idl" style description of the summary format. It 6 * This file is an "idl" style description of the summary format. It
7 * contains abstract classes which declare the interface for reading data from 7 * contains abstract classes which declare the interface for reading data from
8 * summaries. It is parsed and transformed into code that implements the 8 * summaries. It is parsed and transformed into code that implements the
9 * summary format. 9 * summary format.
10 * 10 *
(...skipping 1322 matching lines...) Expand 10 before | Expand all | Expand 10 after
1333 1333
1334 /** 1334 /**
1335 * Pop from the stack `value` and get the next `target` reference from 1335 * Pop from the stack `value` and get the next `target` reference from
1336 * [UnlinkedConst.references] - a top-level variable (prefixed or not), an 1336 * [UnlinkedConst.references] - a top-level variable (prefixed or not), an
1337 * assignable field of a class (prefixed or not), or a sequence of getters 1337 * assignable field of a class (prefixed or not), or a sequence of getters
1338 * ending with an assignable property `a.b.b.c.d.e`. In general `a.b` cannot 1338 * ending with an assignable property `a.b.b.c.d.e`. In general `a.b` cannot
1339 * not be distinguished between: `a` is a prefix and `b` is a top-level 1339 * not be distinguished between: `a` is a prefix and `b` is a top-level
1340 * variable; or `a` is an object and `b` is the name of a property. Perform 1340 * variable; or `a` is an object and `b` is the name of a property. Perform
1341 * `reference op= value` where `op` is the next assignment operator from 1341 * `reference op= value` where `op` is the next assignment operator from
1342 * [UnlinkedConst.assignmentOperators]. Push `value` back into the stack. 1342 * [UnlinkedConst.assignmentOperators]. Push `value` back into the stack.
1343 *
1344 * If the assignment operator is a prefix/postfix increment/decrement, then
1345 * `value` is not present in the stack, so it should not be popped and the
1346 * corresponding value of the `target` after/before update is pushed into the
1347 * stack instead.
1343 */ 1348 */
1344 assignToRef, 1349 assignToRef,
1345 1350
1346 /** 1351 /**
1347 * Pop from the stack `value` and `target`. Get the name of the property from 1352 * Pop from the stack `value` and `target`. Get the name of the property from
1348 * `UnlinkedConst.strings` and assign the `value` to the named property of the 1353 * `UnlinkedConst.strings` and assign the `value` to the named property of the
1349 * `target`. This operation is used when we know that the `target` is an 1354 * `target`. This operation is used when we know that the `target` is an
1350 * object reference expression, e.g. `new Foo().a.b.c` or `a.b[0].c.d`. 1355 * object reference expression, e.g. `new Foo().a.b.c` or `a.b[0].c.d`.
1351 * Perform `target.property op= value` where `op` is the next assignment 1356 * Perform `target.property op= value` where `op` is the next assignment
1352 * operator from [UnlinkedConst.assignmentOperators]. Push `value` back into 1357 * operator from [UnlinkedConst.assignmentOperators]. Push `value` back into
1353 * the stack. 1358 * the stack.
1359 *
1360 * If the assignment operator is a prefix/postfix increment/decrement, then
1361 * `value` is not present in the stack, so it should not be popped and the
1362 * corresponding value of the `target` after/before update is pushed into the
1363 * stack instead.
1354 */ 1364 */
1355 assignToProperty, 1365 assignToProperty,
1356 1366
1357 /** 1367 /**
1358 * Pop from the stack `value`, `index` and `target`. Perform 1368 * Pop from the stack `value`, `index` and `target`. Perform
1359 * `target[index] op= value` where `op` is the next assignment operator from 1369 * `target[index] op= value` where `op` is the next assignment operator from
1360 * [UnlinkedConst.assignmentOperators]. Push `value` back into the stack. 1370 * [UnlinkedConst.assignmentOperators]. Push `value` back into the stack.
1371 *
1372 * If the assignment operator is a prefix/postfix increment/decrement, then
1373 * `value` is not present in the stack, so it should not be popped and the
1374 * corresponding value of the `target` after/before update is pushed into the
1375 * stack instead.
1361 */ 1376 */
1362 assignToIndex, 1377 assignToIndex,
1363 1378
1364 /** 1379 /**
1365 * Pop from the stack `index` and `target`. Push into the stack the result 1380 * Pop from the stack `index` and `target`. Push into the stack the result
1366 * of evaluation of `target[index]`. 1381 * of evaluation of `target[index]`.
1367 */ 1382 */
1368 extractIndex, 1383 extractIndex,
1369 } 1384 }
1370 1385
(...skipping 498 matching lines...) Expand 10 before | Expand all | Expand 10 after
1869 bitAnd, 1884 bitAnd,
1870 1885
1871 /** 1886 /**
1872 * Perform `target ^= operand`. 1887 * Perform `target ^= operand`.
1873 */ 1888 */
1874 bitXor, 1889 bitXor,
1875 1890
1876 /** 1891 /**
1877 * Perform `target |= operand`. 1892 * Perform `target |= operand`.
1878 */ 1893 */
1879 bitOr 1894 bitOr,
1895
1896 /**
1897 * Perform `++target`.
1898 */
1899 prefixIncrement,
1900
1901 /**
1902 * Perform `--target`.
1903 */
1904 prefixDecrement,
1905
1906 /**
1907 * Perform `target++`.
1908 */
1909 postfixIncrement,
1910
1911 /**
1912 * Perform `target++`.
1913 */
1914 postfixDecrement,
1880 } 1915 }
1881 1916
1882 /** 1917 /**
1883 * Unlinked summary information about an import declaration. 1918 * Unlinked summary information about an import declaration.
1884 */ 1919 */
1885 abstract class UnlinkedImport extends base.SummaryClass { 1920 abstract class UnlinkedImport extends base.SummaryClass {
1886 /** 1921 /**
1887 * Annotations for this import declaration. 1922 * Annotations for this import declaration.
1888 */ 1923 */
1889 @Id(8) 1924 @Id(8)
(...skipping 683 matching lines...) Expand 10 before | Expand all | Expand 10 after
2573 */ 2608 */
2574 @Id(11) 2609 @Id(11)
2575 int get visibleLength; 2610 int get visibleLength;
2576 2611
2577 /** 2612 /**
2578 * If a local variable, the beginning of the visible range; zero otherwise. 2613 * If a local variable, the beginning of the visible range; zero otherwise.
2579 */ 2614 */
2580 @Id(12) 2615 @Id(12)
2581 int get visibleOffset; 2616 int get visibleOffset;
2582 } 2617 }
OLDNEW
« no previous file with comments | « pkg/analyzer/lib/src/summary/format.fbs ('k') | pkg/analyzer/lib/src/summary/resynthesize.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698