Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Reason V4 [Stack 3/n] [Parse Hashtags for polymorphic variants] #2614

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
[Stacked Diff 3/n #2614] [Parse Hashtags for polymorphic variants]""
This reverts commit f005630051aa47c2e2a51634229e8f26d7b56ab6.
  • Loading branch information
jordwalke committed Aug 17, 2020
commit 3340be120b4a4685628b1a8c0bb882a2c1a67fce
2 changes: 1 addition & 1 deletion esy.json
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,6 @@
},
"scripts": {
"test": "esy x make test-once-installed",
"doc": "esy dune build @doc"
"doc": "esy build dune build @doc"
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
[@reason.version 3.7];

Some((1, 2, 3));

type bcd =
Expand Down
2 changes: 1 addition & 1 deletion formatTest/typeCheckedTests/expected_output/attributes.re
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@
* This has a nice side effect when printing the terms:
* If a node has attributes attached to it,
*/;
[@reason.version 3.7];

/**Floating comment text should be removed*/;
[@reason.version 3.7];

/**
* Core language features:
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
/**
* Even if you have an explicit v3.6 marker.
* This whole file wil be auto-upaded to 3.8 becase something uses
* angle brackets.
*/;
[@reason.version 3.8];
let watchThisIsOldStyle: list<int> = [1, 2];

let watchThisIsOldStylePoly = #hello;

/**
* This will cause the whole file to be promoted.
*/
let x: list<int> = [1, 3];
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
[@reason.version 3.8];
/**
* Test auto-promotion based on feature inference even if no version
* tag. By default you're using the old 3.7.
*/
let watchThisIsOldStyle: list<int> = [1, 2];

let watchThisIsOldStylePoly = #hello;

/**
* This will cause the whole file to be promoted.
*/
let x: list<int> = [1, 3];
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
[@reason.version 3.7];
/**
* This should just print a 3.7 version attr at the top.
*/
let watchThisIsOldStyle: list(int) = [1, 2];
1 change: 1 addition & 0 deletions formatTest/typeCheckedTests/expected_output/comments.re
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
/* **** comment */
/*** comment */
/** docstring */;

[@reason.version 3.7];

/* comment */
Expand Down
9 changes: 5 additions & 4 deletions formatTest/typeCheckedTests/expected_output/comments.rei
Original file line number Diff line number Diff line change
@@ -1,15 +1,16 @@
/* **** comment */
/*** comment */
/*** docstring */
/** docstring */;

[@reason.version 3.7];

/* comment */
/*** docstring */
/** docstring */;
/*** comment */
/**** comment */
/***** comment */

/** */;
[@reason.version 3.7];

/*** */
/**** */

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
/* **** comment */
/*** comment */
/** docstring */;

[@reason.version 3.7];

/* comment */
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
/* **** comment */
/*** comment */
/** docstring */;

[@reason.version 3.7];

/* comment */
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
/* **** comment */
/*** comment */
/** docstring */;

[@reason.version 3.7];

/* comment */
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
/* **** comment */
/*** comment */
/** docstring */;

[@reason.version 3.7];

/* comment */
Expand Down
4 changes: 2 additions & 2 deletions formatTest/typeCheckedTests/expected_output/mlSyntax.re
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
/* Copyright (c) 2015-present, Facebook, Inc. All rights reserved. */

/**
/***
* Testing pattern matching using ml syntax to exercise nesting of cases.
*/;
*/
[@reason.version 3.7];

type xyz =
Expand Down
50 changes: 41 additions & 9 deletions formatTest/typeCheckedTests/expected_output/oo_3_dot_8.re
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,36 @@

[@reason.version 3.8];

type canStillDefineConst =
| []
| ::(int, canStillDefineConst);

class virtual stack <'a> (init) = {
as self;
/*
* The "as this" is implicit and will be formatted away.
*/
val virtual dummy: unit;
val mutable v: list<'a> = init;
pub virtual implementMe: int => int;
pub is_empty = () =>
switch (v) {
| [] => true
| _ => false
};
pub is_empty_unitless =
switch (v) {
| [] => true
| _ => false
};
pub empty_unitless = {
v = [];
self;
};
pub empty = () => {
v = [];
self;
};
pub pop =
switch (v) {
| [hd, ...tl] =>
Expand Down Expand Up @@ -90,6 +113,15 @@ class extendedStackAcknowledgeOverride

let inst = (new extendedStack)([1, 2]);

let wasItFull =
!inst::empty()::empty_unitless::is_empty();
// this is the same
let wasItFull' =
!inst::empty()::empty_unitless::is_empty();

let orig_not = (!);
let (!) = o => o::empty();

/**
* Recursive classes.
*/
Expand Down Expand Up @@ -195,7 +227,7 @@ let acceptsOpenAnonObjAsArg =
y: int,
},
) =>
o#x + o#y;
o::x + o::y;
let acceptsClosedAnonObjAsArg =
(
o: {
Expand All @@ -204,7 +236,7 @@ let acceptsClosedAnonObjAsArg =
y: int,
},
) =>
o#x + o#y;
o::x + o::y;
let res =
acceptsOpenAnonObjAsArg({
pub x = 0;
Expand Down Expand Up @@ -346,13 +378,13 @@ let x: tupleClass<int, int> = {
pub pr = (10, 10)
};

let x: #tupleClass<int, int> = x;
let x: *tupleClass<int, int> = x;

let incrementMyClassInstance:
(int, #tupleClass<int, int>) =>
#tupleClass<int, int> =
(int, *tupleClass<int, int>) =>
*tupleClass<int, int> =
(i, inst) => {
let (x, y) = inst#pr;
let (x, y) = inst::pr;
{pub pr = (x + i, y + i)};
};

Expand All @@ -361,7 +393,7 @@ class myClassWithNoTypeParams = {};
* The #myClassWithNoTypeParams should be treated as "simple"
*/
type optionalMyClassSubtype<'a> =
option<#myClassWithNoTypeParams> as 'a;
option<*myClassWithNoTypeParams> as 'a;

/**
* Remember, "class type" is really "class_instance_type" (which is the type of
Expand Down Expand Up @@ -398,7 +430,7 @@ class addablePoint:
one: addablePointClassType,
two: addablePointClassType,
) =>
one#x + two#x + one#y + two#x;
one::x + two::x + one::y + two::x;
pub x: int = init;
pub y = init;
};
Expand All @@ -412,7 +444,7 @@ class addablePoint2:
one: addablePointClassType,
two: addablePointClassType,
) =>
one#x + two#x + one#y + two#x;
one::x + two::x + one::y + two::x;
pub x: int = init;
pub y = init;
};
Expand Down
40 changes: 22 additions & 18 deletions formatTest/typeCheckedTests/expected_output/typeParameters.re
Original file line number Diff line number Diff line change
@@ -1,29 +1,33 @@
/**
* Testing type parameters.
*/;
[@reason.version 3.7];
[@reason.version 3.8];

type threeThings('t) = ('t, 't, 't);
type listOf('t) = list('t);
module type ListItem = {let x: int;};

type underscoreParam(_) =
let myListOfModules: list<module ListItem> = [];

type threeThings<'t> = ('t, 't, 't);
type listOf<'t> = list<'t>;

type underscoreParam<_> =
| Underscored;
type underscoreParamCovariance(+_) =
type underscoreParamCovariance<+_> =
| Underscored;
type underscoreParamContravariance(-_) =
type underscoreParamContravariance<-_> =
| Underscored;

type tickParamCovariance(+'a) =
type tickParamCovariance<+'a> =
| Underscored;
type tickParamContravariance(-'a) =
type tickParamContravariance<-'a> =
| Underscored;

let x: option(list('a)) = None;
type myFunctionType('a) = (
list(('a, 'a)),
int => option(list('a)),
let x: option<list<'a>> = None;
type myFunctionType<'a> = (
list<('a, 'a)>,
int => option<list<'a>>,
);
let funcAnnoted = (~a: list(int)=[0, 1], ()) => a;
let funcAnnoted = (~a: list<int>=[0, 1], ()) => a;

/**
* Syntax that would be likely to conflict with lexing parsing of < > syntax.
Expand All @@ -46,12 +50,12 @@ let isSuperGreaterThanEqNegFive3 = zero >>= (-5);

let jsx = (~children, ()) => 0;

type t('a) = 'a;
let optionArg = (~arg: option(t(int))=?, ()) => arg;
type t<'a> = 'a;
let optionArg = (~arg: option<t<int>>=?, ()) => arg;
let optionArgList =
(~arg: option(list(list(int)))=?, ()) => arg;
let defaultJsxArg = (~arg: t(int)=<jsx />, ()) => arg;
let defaultFalse = (~arg: t(bool)=!true, ()) => arg;
(~arg: option<list<list<int>>>=?, ()) => arg;
let defaultJsxArg = (~arg: t<int>=<jsx />, ()) => arg;
let defaultFalse = (~arg: t<bool>=!true, ()) => arg;
/* Doesn't work on master either let defaultTrue = (~arg:t<bool>= !!true) => arg; */

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@
*/;
[@reason.version 3.8];

module type ListItem = {let x: int;};

let myListOfModules: list<module ListItem> = [];

type threeThings<'t> = ('t, 't, 't);
type listOf<'t> = list<'t>;

Expand Down
Loading