Summary: 568 instances, 476 unique Text Count * TODO (jmbrown): Maybe we should have two separate errors here-- one for type spread and 1 (* TODO: This rule allows interpreting an object as a type! 1 (* TODO: own_props/proto_props is misleading, since they come from interfaces, 1 let acc = self#type_ cx pole_TODO acc tout in 3 self#prop cx pole_TODO acc prop 1 // TODO: instance, static 1 // TODO: See the comment above the events$EventEmitter declaration 1 (* TODO: any related suppressions should not be considered used *) 1 (* TODO: anywhere where we would raise a Missing_def 1 (* TODO: check that this is a subtype of i? *) 1 (* TODO: handle this more gracefully than `failwith` *) 1 // TODO: window.NodeFilter exists at runtime and behaves as a constructor 1 acc (* TODO (rballard): regional lint disabling *) 1 TODO [perf]: measure size and possibly optimize *) 1 (* TODO: This is _very_ similar to `one_of` above. *) 1 (* TODO we could probably take the same shortcut for functions with an explicit `void` annotation 1 (* TODO add an option to support symlinks *) 1 self#type_ cx pole_TODO acc tout 1 (* TODO: string of parse error constructor *) 1 * TODO: The type constructors ShapeT, ObjAssignToT/ObjAssignFromT, 1 let acc = self#type_ cx pole_TODO acc t1 in 2 | SetProtoT (_, t) -> self#type_ cx pole_TODO acc t 1 | SubstOnPredT (_, _, _, t) -> self#type_ cx pole_TODO acc t 1 (* TODO consider filtering these to OrdinaryNames only *) 1 (* TODO: use `import typeof` instead when that lands **) 1 (* TODO: ExportTypeFrom defines aliases, which we don't handle yet. TS 2 (* TODO: Remove the `Newline` hack, this forces newlines to exist 1 self#tout cx pole_TODO acc t 1 (* TODO this use of display_string_of_name is a bit sketchy *) 1 (* TODO: In general, "keyMirror" could resolve to anything. It might not be 1 (* TODO: replace this with the context_optimizer *) 1 // TODO: show references 1 let acc = self#props cx pole_TODO acc class_private_fields in 1 (* TODO the $-prefixed names should be internal *) 1 let acc = self#type_ cx pole_TODO acc t in 3 (* TODO: when a file changes, the below removes the file entirely and then adds 1 let reason = mk_reason (RCustom "for-in") loc (*TODO: loc should be loc of loop *) in 1 * TODO: Is OLD_M the same as NEW_M? 1 let size = Some 1 (* TODO *) in 1 * TODO: Regarding the above, we might profitably separate these two notions of 1 * TODO: 1 let pole_TODO = Polarity.Neutral 1 let acc = self#type_ cx pole_TODO acc this in 3 let acc = self#type_ cx pole_TODO acc t2 in 1 (* TODO destructuring+defaults unsupported in assignment expressions *) 1 * Due to this, we never error on property accesses. TODO: Build a 1 * TODO: At the moment it isn't possible to import a non-libdef module from a 1 | Value (ObjSpreadLit _) -> (* TODO *) Nothing 1 (* TODO: re-exports *) 2 TODO we can move to a single representation for singletons - 1 (* TODO: anywhere where we would raise a Missing_def 1 Unknown (* TODO *) 1 (* TODO: enumerate all use types *) 2 TODO: shouldn't this be captured by resolved_requires_changed because foo's 1 (* TODO surface all errors *) 1 self#type_ cx pole_TODO acc representation_t 1 TODO: somehow the original flow needs to be propagated as well *) 1 sort_text = sort_text_of_rank 100 (* TODO: use a constant *); 1 (* TODO call loc_of_predicate on some pred? 1 (* TODO move these to type aliases once optional type args 1 (* TODO: possibly unsound to filter out orig_obj here, but if we don't, 1 | ResolvedSpreadArg (_, arr, _) -> self#arr_type cx pole_TODO acc arr) 1 (* TODO: handle requires *) 2 let reason_desc = reason_of_t ty (* TODO look into unwrap *) |> desc_of_reason ~unwrap:false in 1 (* TODO: add support for optional class properties *) 1 (* TODO: possibly unsound to filter out orig_obj here, but if we 1 TODO: if we know a function property vs a member, we could 1 TODO: maybe make this a config option? *) 2 let acc = self#type_ cx pole_TODO acc t in 10 (* TODO: intersection *) 1 TODO: if all negated ignores are absolute, then we can check whether a 1 type_ = None (* TODO: include the type *); 1 | Elem _ -> "Elem _" (* TODO print info about the key *) 1 (* TODO: or symbol *) 1 * TODO: Guarantee that the streamed errors are complete. That once we stream down errors for 1 (* TODO: these are rare so we haven't implemented them yet *) 2 let acc = self#type_ cx pole_TODO acc tin in 3 (* TODO $-prefixed names should be internal *) 1 | Arg t -> self#type_ cx pole_TODO acc t 1 (* TODO: complete module names *) 1 | FilterMaybeT (_, t) -> self#type_ cx pole_TODO acc t 1 (* TODO we should probably give up if we are trying to generate an import statement with 1 (* TODO: this format is deprecated but can't be backwards-compatible. 1 | MixinT (_, t) -> self#type_ cx pole_TODO acc t 1 (* TODO: extends shouldn't return an array *) 1 (* TODO: remove once .flowconfigs no longer use this setting *) 1 (* TODO: Property accesses create unresolved tvars to hold results, even when 1 (* TODO: Given that at this point we also have loc1.start.offset < 1 (* TODO: Make this configurable *) 1 | Lower (_, l) -> self#type_ cx pole_TODO acc l 1 (* TODO: (jmbrown) we can be less strict here than unifying. It may be possible to 1 | SpreadArg t -> self#type_ cx pole_TODO acc t 1 (* TODO consider avoiding the use of display_string_of_name here. For now, leaving as-is to 1 (* TODO: use tparams_map *) 2 let acc = self#type_ cx pole_TODO acc call_this_t in 2 (* TODO: It should be possible to vastly simplify hoisting by overriding the 1 // TODO: should include signature 2 (* TODO: Wait a minute, why do we bother with requires for lib files? Pretty 1 (* TODO: own props should take precedence *) 2 getTargetRanges(): Array; // TODO: StaticRange 1 (* TODO use expression context for printing to insert parens when actually needed. *) 1 | Elem key -> self#type_ cx pole_TODO acc key 1 TODO: These low-level operations should probably be replaced by 1 let acc = self#type_ cx pole_TODO acc else_t in 1 (* TODO: use FlowConfig.get directly and send errors/warnings to the client instead 1 * slices, but that approach behaves in nonobvious ways. TODO why? 1 ~exports (* TODO consider filtering out internal names *) 1 * TODO: handle symbols (which raise a TypeError, so should be banned) 1 (* TODO: similar concern as above *) 1 (* TODO: Delete once all expressions support comment attachment *) 1 (* TODO: support unions (`||`), like this: 1 (* TODO: we shouldn't have to fabricate a type here! *) 1 (* TODO: surface these errors to user *) 1 a separate import. TODO: maybe make this a config option? *) 1 (* TODO consider implementing this without the string conversion. For now, leaving it this 1 // TODO: HTMLDocument 1 (* TODO: This will potentially report a remote name. 1 (** TODO currently type annotations internal to patterns get parsed but not 1 (* FIXME: we should check to avoid creating unneeded Node 1 (* TODO: better to parse json files, not ignore them *) 1 (* TODO: what identifiers does `` read? *) 3 self#type_ cx pole_TODO acc t) 1 (* TODO: fix spread to use provided __proto__ prop *) 1 (** TODO: handle case when file+contents don't agree with file system state **) 1 (* TODO consider handling internal names explicitly *) 1 let acc = self#type_ cx pole_TODO acc key in 1 (* TODO consider supporting other property keys (e.g. literals). Also update the 1 // TODO: The use of `typeof` makes this function signature effectively 1 (* TODO use hint in arg_list *) 1 (* TODO: Does this distinction matter for the type checker? *) 1 | FilterOptionalT (_, t) -> self#type_ cx pole_TODO acc t 1 * we do in statement.ml. TODO: write a test and implement this. *) 1 | BecomeT { reason = _; t; empty_success = _ } -> self#type_ cx pole_TODO acc t 1 (* TODO: min_level should probably default to warn, but was historically info *) 1 (* TODO we may want to provide a location here *) 1 | ReactConfigType default_props -> self#type_ cx pole_TODO acc default_props 1 | ElementType { index_type; _ } -> self#type_ cx pole_TODO acc index_type 1 (* TODO: depends on facebook_module_interop *) 1 * TODO: To relax that constraint, we need to be able to figure out how to 1 (* TODO: Even in this case, the type might recursively include tvars, which 1 let acc = self#tout cx pole_TODO acc t in 5 (* TODO: do we need to do anything special for merging Null with Void, 1 (* TODO: Ditto above comment for Function.prototype *) 1 let acc = self#export_types cx pole_TODO acc ts in 1 ((* TODO use Ty_debug.json_of_t after making it faster using count_calls *) 1 (* TODO: ordered_reasons should not be necessary *) 3 (* TODO: directly derive loc and desc from the reason of tvar *) 1 let acc = self#type_ cx pole_TODO acc incomplete_out in 1 (* TODO - find a way to gracefully kill the workers. At the moment, if the workers are in the 1 (* TODO: ideally we'd do the same when lower bounds flow to a 1 let acc = self#type_ cx pole_TODO acc index_type in 1 intersection of super types. TODO: Instead of using an intersection for 1 (* TODO: add a node for the rest param itself, including the `...`, 1 (* TODO: update log to reflect current terminology **) 1 self#type_ cx pole_TODO acc t 2 (* TODO: remember these cross-module aliases. if the remote thing matches, 1 (* TODO: require *) 1 let acc = self#tout cx pole_TODO acc tout in 3 * TODO Fix once T71257430 is closed. *) 4 (* TODO: make this configurable between React and react *) 1 (* TODO currently we don't step on specific. shouldn't we? *) 1 (* TODO: only complete obj destructuring pattern when name is valid identifier *) 1 detail = "(global)" (* TODO: include the type *); 1 sort_text = sort_text_of_rank 101 (* TODO: use a constant *); 1 | OrdinaryName _ -> (* TODO *) None 1 TODO update this comment when recursive unwrapping of 1 (* TODO: since we're inserting values, we shouldn't really be using the Ty_printer *) 1 default = _ (* TODO: confirm we shouldn't use this *); 1 let acc = self#type_ cx pole_TODO acc default_props in 1 (* TODO: use_op *) 6 * TODO: track unused suppressions *) 1 (* TODO: filter to results that match `token` *) 2 (* TODO - if dash_length is less than 0 that means the line in question probably 1 (* TODO: handle unchecked module names, maybe still parse? *) 1 (* TODO: Don't ignore the required flag. *) 2 | One t -> self#type_ cx pole_TODO acc t 1 let acc = self#props cx pole_TODO acc class_private_methods in 1 let acc = self#dict_type cx pole_TODO acc dict in 1 type_ = None (* TODO: include the parent class type *); 1 (* TODO: eveyrthing after a computed prop should be optional *) 1 (* TODO import namespaces (`ns`) as modules that might contain imported types *) 1 | UnaryMinusT (_, t) -> self#type_ cx pole_TODO acc t 1 (* TODO make tail-recursive *) 1 self#type_ cx pole_TODO acc arg 1 // TODO if we every start profiling Windows 1 return convert_undefined(); // TODO: raise v8 exception 1 // TODO Heades and URLSearchParams are almost the same thing. 1 (* TODO *) 8 | RestType (_, t) -> self#type_ cx pole_TODO acc t 1 self#type_ cx pole_TODO acc void_out 2 (* TODO: Don't trap method calls for now *) 1 (* TODO: support inserting requires 1 ~err_loc:(Some id_loc) (* TODO: this seems wrong but matches TF1.0 *) 1 (* TODO: register/handle Parse_error.Error *) 1 (* TODO: Get a SHA for each file when we parse it, and include the SHA in the 1 (* TODO - this isn't exactly right. It could be something else, right? *) 1 (* TODO *) 2 // TODO: window.TreeWalker exists at runtime and behaves as a constructor 1 | MatchProp { prop_t = t; _ } -> self#type_ cx pole_TODO acc t 1 (* TODO move to ALocRepresentationDoNotUse *) 1 (* TODO: add property *) 1 (* TODO $-prefixed names should be internal *) 1 // TODO: *Event 1 (* TODO: this should be a parse error, unrepresentable AST *) 1 (* TODO Figure out how to implement root striping *) 1 (* TODO: with_types should probably be false, but this maintains previous behavior *) 1 // TODO: include `extends `? not in the AST but could be useful 1 // TODO - reorder records based on line number 1 // TODO it would be nice if this returned results. 1 +srcElement: Element; // TODO: nullable 1 (* TODO we may want to add location information here *) 1 (* TODO: flesh this out *) 1 // TODO: This should add more errors 1 let acc = self#namemap (fun acc (t, _, _) -> self#type_ cx pole_TODO acc t) acc props in 1 (* TODO consider just excluding internal names here. *) 1 * but it's OK if they are in practice. TODO: consider making this an internal 1 let acc = self#tout cx pole_TODO acc tout_tvar in 1 (* TODO: attributes with namespaced names *) 1 let acc = self#type_ cx pole_TODO acc value in 1 let acc = self#tout cx pole_TODO acc meth_tout in 1 (* TODO check attribute types against an fbt API *) 1 (* TODO implement a more useful set of error conditions *) 1 * TODO: This rule doesn't interact very well with union-type checking. It 1 * TODO: Don't clear live parse errors. Those don't require the server, so we can still keep 1 (* TODO: get `_qual._name` *) 2 (* TODO matching on the use_op seems wrong *) 1 (* TODO: handle TEMPORARY_Object, ReadOnly, Exact, if they wrap objects? *) 1 let acc = self#tout cx pole_TODO acc call_tout in 1 (* TODO return ALoc *) 1 (None, Key_map.empty, Key_map.empty, Key_map.empty) (* TODO: prune the "not" case *) 1 (* TODO: track unused suppressions *) 2 // TODO: window.NodeIterator exists at runtime and behaves as a constructor 1 (* TODO: why are these different? *) 1 TODO: this should be a dedicated exception, but we have to make sure nothing 2 TODO: The type constructors ShapeT, ObjAssignToT/ObjAssignFromT, 1 import. TODO: maybe make this a config option? *) 1 (* TODO consider asserting that there are no parse errors. *) 1 TODO: This assumption does not always hold. 1 again. TODO: there must be a better way *) 1 (* TODO: if we had both the expanded and unexpanded type alias, we'd 1 (* TODO (glevi) - One of the numbers we need to estimate is "If we restart how many files 1 let acc = self#type_ cx pole_TODO acc t1 in 1 * be exact. TODO: Forbid writes to indexers through the photo chain. 1 let acc = self#tout cx pole_TODO acc t3 in 1 // TODO - well todoish. If data is a string, we don't need to marshal it. 1 let acc = self#type_ cx pole_TODO acc e in 2 let acc = self#type_ cx pole_TODO acc tout in 5 standard walk). TODO: Rewriting this walker as a subclass of Type_visitor 1 let on_error _ () = (* TODO send error to client *) () in 2 (* TODO: DefaultType, e.g. `export default class Foo {}` *) 1 activeSignatureHelp = None (* TODO *); 1 // TODO it would be nice if the results included the use of the inherited class property. 2 +target: EventTarget; // TODO: nullable 1 to violate some well-hidden private agreements. TODO *) 1 * TODO: we started tracking annotations when variables are bound. Once we do 1 (* TODO add in-scope type variable binding table *) 1 * TODO: Call properties are excluded from the subclass compatibility 1 (* TODO: replace type parameters with stable/proper names? *) 1 let visit_pair acc (_loc, t) = self#type_ cx pole_TODO acc t in 1 let acc = self#type_ cx pole_TODO acc t2 in 1 (* TODO String literals should not be able to include internal names *) 1 | None -> () (* TODO: get-def when object property is refined *) 1 let acc = self#fun_type cx pole_TODO acc fn in 1 let acc = self#props cx pole_TODO acc class_private_static_fields in 1 (* TODO type names should not be able to be internal names *) 1 * TODO: we can't model this disjunction without heap refinements, so until then we 1 (* TODO: Instead of stopping at the first unexpected key, we should 1 (* TODO: if intrinsic is null, we will treat it like prototype termination, 1 (* TODO consider filtering to OrdinaryNames only *) 1 (* TODO: use tparams_map instead of calculating this here *) 1 (* TODO: closure *) 2 (* TODO this exists only until we start resolving files using 1 | Type t -> self#type_ cx pole_TODO acc t 1 (* TODO: add new option *) 1 (* TODO: handle `this` constraints *) 1 let acc = self#tout cx pole_TODO acc t2 in 2 let acc = self#obj_flags cx pole_TODO acc flags in 2 TODO: somehow the original flow needs to be propagated as well *) 1 * TODO: takes a callback and returns `boolean` in v12+ 3 {/* TODO: add release */} 1 (* TODO or disallow? *) 1 (* TODO: getters/setters/constructors will never be async *) 1 (* In general, cases are non-exhaustive. TODO: optimize with `default`. *) 1 (fun acc (obj_t, _) -> self#type_ cx pole_TODO acc obj_t) 1 (* TODO: Remove any right trailing whitespace *) 1 TODO rework the early-exit stuff to not break invariants. Until then it'll 1 let acc = (seen', self#goal_id cx pole_TODO acc id) in 1 | None -> flat_ugly_space (* TODO we shouldn't do this for the last attr *) 1 (* TODO: check status.directory *) 1 (* TODO: use a fold *) 1 (* TODO: use Unix.realpath from OCaml 4.13+ *) 1 (* TODO: interfaces don't have a name field, or even statics *) 1 (* TODO: change the way default works to see exp as a source *) 1 (* TODO consider issuing an error when we encounter an internal name *) 1 (* TODO: It isn't currently possible to return two types for a given 1 TODO: make these CLI flags *) 1 (* TODO lexical scope support *) 1 TODO: use `file_watcher.timeout` config instead (careful, it's in seconds) *) 1 (* TODO: for the moment we only support simple keys (empty projection) 1 (* TODO: interfaces don't have a name field, or even statics *) 1 * TODO: Handle orphans gracefully. *) 1 self#type_ cx pole_TODO acc index_type 1 // TODO: HTML*Element 1 (* TODO remove after lookup overhaul *) 1 | NotT (_, t) -> self#tout cx pole_TODO acc t 1 (* TODO: replace RCustom descriptions with proper descriptions *) 1 | Ok (_, warnings) -> error warnings (* TODO: write warnings to stderr instead of exiting *) 1 TODO: this shadow map is probably a perf bottleneck, get rid of it. 1 (* TODO: this only needs to be shallow; we don't need to walk into function 1 (* TODO: assert that _to_remove is empty? should be on init *) 1 (* TODO: Support for use types is currently sketchy. Full resolution of use 1 | TypeCastT (_, t) -> self#type_ cx pole_TODO acc t 1 TODO: Call properties are excluded from the subclass compatibility 1 TODO: Scanning the dependency graph to find reverse dependencies like this is not good! To avoid 1 +currentTarget: EventTarget; // TODO: nullable 1 (* TODO we should probably abort if we encounter an internal name here, rather than 1 (Kill globals TODO: move to context.) 1 (* TODO: refactor pre-pass to use Job_utils as well *) 1 (* TODO: remember these cross-module aliases. if the remote thing matches, 1 | ImplementsT (_, t) -> self#type_ cx pole_TODO acc t 1 (* TODO: We should only special-case this logic if "require" is not aliased 1 (* TODO: remove extra info when surface syntax is added *) 1 TODO: Ideally implemented as a fold, not a map. 1 let acc = self#type_ cx pole_TODO acc component in 1 (* TODO this should not allow internal names *) 1 (* TODO: it is conceivable that other things (e.g. functions) could also be 1 (* TODO: we _could_ turn `import {a} from 'a'; import type {T} from 'a'` into 1 | GetValuesT (_, t) -> self#type_ cx pole_TODO acc t 1 (* TODO: add support for method predicates *) 1 (* TODO: How to merge rest names and locs? *) 1 (* TODO: Assignment expressions can alter the actual type of something in 1 | React.ConfigCheck config -> self#type_ cx pole_TODO acc config 1 (* TODO: walk quasis? *) 1 (* TODO: add Type.predicate variant that tests number equality *) 1 (* TODO: should not refine if undefined is shadowed *) 1 self#type_ cx pole_TODO acc t 4 (* TODO (glevi) - We probably don't need to make the monitor exit when the file watcher dies. 1 TODO: Make these rules great again by computing more reasonable summary 1 (* TODO: await should look up Promise in the environment instead of going 1 (** TODO: (1) Define a more general partial equality, that takes into 1 let acc = self#type_ cx pole_TODO acc return in 1 (* TODO: The following kinds of types are not walked out of laziness. It's 1 TODO: Encoding formats in strings instead of ADTs is not ideal, obviously. *) 1 ranges?: Array, // TODO: StaticRange 1 TODO: this is a very coarse ranking. We could do much better. For example, we 1 (* TODO the $-prefixed names should be internal *) 1 (* TODO consider adding another name variant for munged property strings *) 1 self#type_ cx pole_TODO acc voided_out 1 (* TODO: add test for sentinel test on implements *) 1 let acc = self#type_ cx pole_TODO acc this_t in 1 let acc = self#type_ cx pole_TODO acc t in 1 let acc = self#inst_type cx pole_TODO acc insttype in 1 (* TODO: it should not be possible to create a MatchingPropT with a non-tvar tout *) 1 TODO: It should be possible to factor the processing of LHS / reference 1 (* TODO: build support for saved state *) 2 (* TODO consider making the $-prefixed names internal *) 1 (* TODO: error if targs <> None *) 1 | Ast.Class.Body.PrivateField (_loc, _field) -> elem (* TODO *) 1 | Computed t -> self#type_ cx pole_TODO acc t 1 (* TODO: Unification between concrete types is still implemented as 1 | ReposUseT (_, _, _, t) -> self#type_ cx pole_TODO acc t 1 (** TODO [perf]: investigate whether this takes too much memory **) 1 (* Remove locations. TODO at some point we may want to include them here. *) 1 (* TODO: These properties should go in Object.prototype. Currently we 1 (* TODO: with_types should probably be false, but this maintains previous behavior *) 1 | MatchingPropT (_, _, t) -> self#type_ cx pole_TODO acc t 1 (* TODO: This is inconsistent with the way the id/member hooks work, but we 1 (* TODO: look up the annotation for the variable at loc and pass in *) 1 (* TODO add API to do this without having to swap in env *) 1 (* TODO *) 1 (* TODO: either ensure that array_unify is the same as array_flow both ways, or 1 (* TODO: add TypesForbidden (disables types even on files with @flow) and 1 (* some types may not be evaluated yet; TODO *) 1 (* TODO the $-prefixed names should be internal *) 1 (* TODO we could pass over `return;` since it's definitely returning `undefined`. It will likely 1 (* TODO: Fix GetProtoT for InstanceT (and ClassT). 1 self#tout cx pole_TODO acc tout_tvar 1 (* TODO - explicitly order the libs. 1 (* TODO we may want to surface AnyType results somehow since we can't be sure whether they 1 (* TODO: It would be better if we modeled providers as Inter | UnionLike. This would 1 (* TODO: Punt on these for now, but figure out whether these should fall through or not *) 2 (* TODO: return Hh_json.JSON_Null *) 1 (* TODO get rid of this *) 1 (* TODO: When we actually pass types down, we should create a type annotation 1 (* TODO: This is a semantic analysis and shouldn't be in the parser *) 1 let acc = self#type_ cx pole_TODO acc b in 1 TODO: we should be able to track the specific files this applies to and avoid 1 | Watchman_failed (** A fatal error with Watchman (TODO: dedupe with Watchman_error) *) 1 (* TODO consider converting to SMap here so downstream code doesn't need to 1 | ResolvedArg (t, _) -> self#type_ cx pole_TODO acc t 1 detail = title (* TODO: include the type *); 1 | _ -> () (* TODO add type exports when find-refs supports them *) 1 (* TODO: The server should exit, but we should exit with a different 1 | ReadElem tout -> self#tout cx pole_TODO acc tout 1 return convert_undefined(); // TODO: raise v8 exception 1 (* TODO: Rethink coverage and trust for these types *) 1 let acc = self#type_ cx pole_TODO acc a in 1 (* TODO if we are reprinting the entire program we probably want this to be 1 (* TODO: inherited_method logic no longer applies for statics. It used to 1 (* TODO (glevi) - If we want this read to timeout on Windows, we need to make Marshal_tools 1 self#fun_type cx pole_TODO acc fn 1 (* TODO SingletonStrT should not include internal names *) 1 (* TODO not sure if this is right, just need to unbreak the build. *) 1 (* TODO: Would be better to handle declared functions directly rather than 1 // TODO: enum type in crypto.constants 1 (* TODO: OptionalMember *) 1 (* TODO - Push-based API for dfind. While the FileWatcher API is push based, dfind is faking it 1 let int x = number (float x) (* TODO: this is inefficient, push ints to C *) 1 (* TODO: support suppressions *) 1 (* TODO: include superclass keys *) 1 | ObjTestProtoT (_, t) -> self#type_ cx pole_TODO acc t 1 let acc = self#props cx pole_TODO acc class_private_static_methods in 1 // TODO: Space between dst and info->heap is unused, but will almost certainly 1 (* TODO: Imports within `declare module`s can only reference other `declare 1 (* TODO make a type visitor *) 1 (* TODO *) 1 let acc = self#type_ cx pole_TODO acc b in 1 self#type_ cx pole_TODO acc void_t 1 TODO: This treatment of spreads is oblivious to issues that arise when spreading expressions 1 let acc = self#type_ cx pole_TODO acc static in 1 (* TODO: where does filename need to be searchable? *) 1 (* TODO specifiers *) 1 let acc = self#type_ cx pole_TODO acc t1 in 8 type_ = None (* TODO: include the class type *); 1 (* TODO: If the resolved object is not exact and sealed, or if it does 1 * TODO: figure out how to model the negation of an optional chain refinement without 1 TODO: also, symbols *) 1 AnyT as well. TODO: wait for `to_obj` to be resolved, and then call 1 (* TODO: Don't ignore the required flag. *) 1 (* TODO maintain changelist here too *) 1 (* TODO: In the FullyResolved case, repositioning will cause us to "lose" 1 (* TODO: should add .default depending on facebook_module_interop *) 1 (* TODO: deprecate this in favor of Reason.json_of_loc *) 1 (* TODO consider omitting items with internal names throughout *) 1 let acc = self#type_ cx pole_TODO acc a in 2 (* TODO: sort global modules above ../ above ./ *) 1 let acc = self#type_ cx pole_TODO acc config in 2 (* TODO: remove this? kept for BC *) 1 let acc = self#type_ cx pole_TODO acc obj_t in 1 (* TODO - tuple_types could be undefined x N if given a literal *) 1 (* TODO: We can also specialize when there are targs, because this 1 (* TODO: we shouldn't have to fabricate a type here! *) 1 (* TODO we probably should filter out internal names too, but for now keeping behavior the same *) 1 (* TODO: detect structural misuses abnormal control flow constructs *) 1 (* TODO - delete this line once this loop is fully lwt. At the moment, the idle loop never 1 (* TODO consider making it an error to try to serialize an internal name *) 1 let acc = self#type_ cx pole_TODO acc t2 in 6 (* TODO this Field should probably have a location *) 1 backwards-compatibility. TODO: change this? *) 1 (* TODO: ExportFrom defines aliases, which we don't handle yet. TS 1 (* TODO: is it premature optimization to memoize this? how bad is doing the 1 (* TODO React element names should not allow internal names *) 1 (* TODO: need to consider `after`. and indent? *) 1 | ComparatorT { arg; _ } -> self#type_ cx pole_TODO acc arg 1 (* TODO: wow, this is a shady way to return no result! *) 1 (* TODO: arrows shouldn't have these: *) 1 (* TODO: How to merge param names? *) 1 (* TODO disallow or push vars into env? *) 1 (* TODO: confirm CJS/ESM interop, depends on flowconfig *) 1 * TODO: It is unfortunate that this function duplicates so much of the logic 1 let acc = self#type_ cx pole_TODO acc t in 1 let acc = self#tout cx pole_TODO acc b in 1 (* TODO: Similar to the "require" case above, we should only special-case 1 let acc = self#tout cx pole_TODO acc t2 in 1 // TODO: Add ReadableStream 1 (* TODO - In the future if we start running check-contents on DidChange, we should probably 1 failwith (Utils_js.spf "Unhandled type ctor: %s" (string_of_ctor t)) (* TODO *) 1 (* TODO: add support for object method predicates *) 1 (* TODO: Use [Symbol.iterator] instead of @@iterator. *) 1 (* Statics of a class. TODO: This logic is unfortunately duplicated from the 1 (* TODO: also say that we could expect an identifier, or if we're in a JSX child 1 (* TODO: Ideally we should check polarity for all class types, but this flag is 1 (* TODO: this doesn't match the signatures of the related functions above *) 1 (* TODO: one day we can replace this with a call to `method_call`, and 1 (* TODO StrT should perhaps not allow internal names *) 1 (* TODO: object, array and non-member expression patterns are invalid 1