prettier/tests/flow/structural_subtyping/__snapshots__/jsfmt.spec.js.snap

156 lines
3.1 KiB
Plaintext

// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`builtin.js 1`] = `
/**
* @flow
*/
interface IHasLength {
length: number;
}
var lengthTest1: IHasLength = [];
var lengthTest2: IHasLength = 'hello';
var lengthTest3: IHasLength = 123; // number doesn't have length
var lengthTest4: IHasLength = true; // bool doesn't have length
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/**
* @flow
*/
interface IHasLength {
length: number
}
var lengthTest1: IHasLength = [];
var lengthTest2: IHasLength = "hello";
var lengthTest3: IHasLength = 123; // number doesn't have length
var lengthTest4: IHasLength = true; // bool doesn't have length
`;
exports[`class.js 1`] = `
/**
* @flow
*/
class ClassWithXString {
x: string;
}
interface IHasXString {
x: string;
}
interface IHasXNumber {
x: number;
}
interface IHasYString {
y: string;
}
var testInstance1: IHasXString = new ClassWithXString();
var testInstance2: IHasXNumber = new ClassWithXString(); // Error wrong type
var testInstance3: IHasYString = new ClassWithXString(); // Error missing prop
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/**
* @flow
*/
class ClassWithXString {
x: string;
}
interface IHasXString {
x: string
}
interface IHasXNumber {
x: number
}
interface IHasYString {
y: string
}
var testInstance1: IHasXString = new ClassWithXString();
var testInstance2: IHasXNumber = new ClassWithXString(); // Error wrong type
var testInstance3: IHasYString = new ClassWithXString(); // Error missing prop
`;
exports[`obj.js 1`] = `
/**
* @flow
*/
interface IHasXString {
x: string;
}
var propTest1: IHasXString = { x: 'hello' };
var propTest2: IHasXString = { x: 123 }; // Error string != number
var propTest3: IHasXString = {}; // Property not found
var propTest4: IHasXString = ({}: Object);
function propTest5(y: {[key: string]: string}) {
(y: IHasXString); // OK
}
function propTest6(y: {[key: string]: number}) {
(y: IHasXString); // error: string != number
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/**
* @flow
*/
interface IHasXString {
x: string
}
var propTest1: IHasXString = { x: "hello" };
var propTest2: IHasXString = { x: 123 }; // Error string != number
var propTest3: IHasXString = {}; // Property not found
var propTest4: IHasXString = ({}: Object);
function propTest5(y: { [key: string]: string }) {
(y: IHasXString); // OK
}
function propTest6(y: { [key: string]: number }) {
(y: IHasXString); // error: string != number
}
`;
exports[`optional.js 1`] = `
/* @flow */
interface HasOptional {
a: string,
b?: number,
};
var test1: HasOptional = { a: "hello" }
var test2: HasOptional = {}; // Error: missing property a
var test3: HasOptional = { a: "hello", b: true }; // Error: boolean ~> number
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/* @flow */
interface HasOptional {
a: string,
b?: number
}
var test1: HasOptional = { a: "hello" };
var test2: HasOptional = {}; // Error: missing property a
var test3: HasOptional = { a: "hello", b: true }; // Error: boolean ~> number
`;