BVB Source Codes

prettier Show unaliased_assign.js Source code

Return Download prettier: download unaliased_assign.js Source code - Download prettier Source code - Type:.js
  1. /**
  2.  * test handling of unaliased value assignment.
  3.  *
  4.  * An unaliased object rvalue may be assigned to a supertype lvalue,
  5.  * because later widening mutations on the rvalue can't break assumptions
  6.  * made by other lvalues.
  7.  *
  8.  * However, upon assignment the rvalue must take on the type of the
  9.  * lvalue, to avoid both false positives and false negatives
  10.  * (unsoundness), as shown below.
  11.  *
  12.  * @flow
  13.  */
  14.  
  15. var glob: { x: string } = { x: "hey" };
  16.  
  17. function assign_then_alias() {
  18.   var obj: { x: string | number };
  19.   obj = { x: "hey" };
  20.   glob = obj;    // error: subsequent assignment might make glob.x a number
  21. }
  22.  
  23. function assign_then_widen() {
  24.   var obj: { x: string | number };
  25.   obj = { x: "hey" };
  26.   obj.x = 10;  // ok, by lvalue's given type
  27. }
  28.  
downloadunaliased_assign.js Source code - Download prettier Source code
Related Source Codes/Software:
storybook - 2017-06-07
ionicons - The premium icon font for Ionic ... 2017-06-07
AsyncDisplayKit - Smooth asynchronous user interfaces for iOS apps. ... 2017-06-07
lottie-android - Render After Effects animations natively on Androi... 2017-06-07
parse-server - Parse-compatible API server module for Node/Expres... 2017-06-07
inferno - An extremely fast, React-like JavaScript library f... 2017-06-08
guetzli - Perceptual JPEG encoder 2017-06-08
cs-video-courses - List of Computer Science courses with video lectur... 2017-06-08
interviews - Everything you need to know to get the job. 2017-06-08
prepack - Prepack is a partial evaluator for JavaScript. Pre... 2017-06-08
CRYENGINE - CRYENGINE is a powerful real-time game development... 2017-06-11
postal - 2017-06-11
reactide - Reactide is the first dedicated IDE for React web ... 2017-06-11
rkt - rkt is a pod-native container engine for Linux. It... 2017-06-11
uWebSockets - Tiny WebSockets https://for... 2017-06-11
realworld - TodoMVC for the RealWorld - Exemplary fullstack Me... 2017-06-11
goreplay - GoReplay is an open-source tool for capturing and ... 2017-06-10
pyenv - Simple Python version management 2017-06-10
redux-saga - An alternative side effect model for Redux apps ... 2017-06-10
angular-starter - 2017-06-10

 Back to top