Summary: 858 instances, 762 unique Text Count (* TODO: Consider finding a way to avoid treating these expressions as 1 * TODO: use the known fast rgba multiplication implementation once 1 | TODO -> "TODO" 1 // TODO: Update the specification with closure-param-type-specifier-list-opt. 1 (* TODO: pass in the real checksum *) 1 // TODO: Consider updating the specification. 1 // TODO: The `intern` crate has a way of preserving sharing of interned 1 // TODO: eval 1 * TODO: Don't use default parser options. 1 // TODO:(shiqicao) change following tuple to Profile after hhbc remove 1 (* TODO: should we be taking the intersection of the errors? *) 1 // TODO: SPEC ISSUES: 1 cumulative, so previous cursors need not be consulted. TODO: is that 1 /*FIXME: restriction support 2 | TODO -> ("TODO", "") 1 (* FIXME what to do here? it seems dangerous to just traverse *) 1 TODO: We need to figure out how to make cases like 1 // TODO: Maybe be more descriptive in error messages 1 // TODO: This is a PHP-ism. Open questions: 2 /* FIXME: PHP calls stat() here if the wrapper has a non-null stat handler, 1 (* TODO: generalize this error message in the future for arbitrary immutable locals *) 1 (* TODO: This does not consider situations like "${x}" as the use of a local.*) 1 if (c >= 040 && c <= 0176) /* TODO isprint && !iscntrl */ 1 /* FIXME - This mapping stuff is imcomplete - where is the spec? */ 1 // TODO: variable operator $ 1 (* TODO t14922604: Further improve error handling *) 1 /* FIXME: some locale free implementation is 1 // TODO: This assumes that the C++ implementation handles comparisons in the 1 (* TODO add an option to support symlinks *) 1 // TODO: Give a warning? 1 (* TODO: figure out reasons *) 1 (* TODO: This is NOT generally right - relies on primitive types being disjoint *) 1 TODO: this should be tested. 1 // TODO: rename this from unstable to something else 1 /* TODO: replace 4 w/byte per channel||pitch once available */ 1 case KindOfLazyClass: return false; // TODO (T68823958) 1 * any spurious type errors with a HH_FIXME comment. 1 // TODO: Update the spec to allow qualified-name < type arguments > 1 (* TODO: This check doesn't need to be done at type checking time; it is 1 // TODO: Add this to the XHP draft specification. 1 (* TODO: Integrate these with the rest of the Hack error messages. *) 1 (* TODO: Scuba logging *) 1 (* TODO: Duplicate of a Typing[4101] error if namespaced correctly 1 // TODO: For now we'll just bail out. We could use a more 1 // FIXME: ReflectionParameter sh/could have native data pointing to the 1 pos = Pos_or_decl.unsafe_to_raw_pos child_pos (* TODO: T87242856 *); 1 " (mode) remove dead HH_FIXME for specified error code " 1 // TODO: Once OSS McRouter version is staged, this code can be 1 // TODO: What about ?-> 1 // TODO: why do we need :'a everywhere? 1 // TODO: that we were expecting either const or public. 1 // TODO: what is this attbiute? check ast_to_aast 1 // TODO: FIXME! Without this implemented properly, the JIT 1 // TODO: we eventually want to return seqid to the caller 1 // TODO: (t2869817) ASan doesn't play well with jemalloc 1 let name_s = name.1.clone(); // TODO: can I avoid this clone ? 1 // TODO: optimize me 3 (* TODO use current_decl *) 1 // TODO: return Cow<[u8]> 1 // TODO: The spec does not specify "where" clauses. Add them. 1 case KindOfRClsMeth: // TODO (T67037453) 1 // TODO: type parameter names are not currently available in HHVM 1 // TODO: Space between dest and *heap is unused, but will almost certainly 1 // TODO: Consider allowing lowercase fallthrough. 1 * TODO: tpenv. Not clear what to do here, as we generate fresh type parameter names 1 ~accept_disposable:false (* TODO: deal with disposables *) 1 // TODO: What hop should we put here? 1 // TODO: Handle object IntlCalendar 1 // TODO T20390825: Make sure this this won't cause premature recovery. 1 // TODO: Add the grammar for the namespace-use-clauses; ensure that it 1 * TODO: 1 (* FIXME shall we inspect tparams and where_constraints *) 1 * TODO: Currently fallback to a Watchman_dead is only handled in calls 1 // TODO: Is this the right error recovery? 1 (* TODO: gen examples *) 1 // TODO: rename/refactor to make it specific to instructions. 1 (* TODO: Lwt defaults to libev when it's installed. Historically, it wasn't installed 1 /* TODO: support */ 1 // TODO: t1800106: re-enable this assert 1 // TODO (T61651936): ResolveClass may return a classptr or a string 1 // TODO: improve this if str->hasConstVal() 1 // FIXME: Implicit public 1 // TODO: not sure this is the right thing to do. 1 (* TODO: Do we need to update trailing_width and offset? *) 1 // TODO: we may eventually want to make an option which specifies 1 | ErrorControlOperator // TODO: Correct? 1 // TODO: A Windows implementation would be nice, but what does the OCaml 1 (* TODO: add more informative data to the exception *) 1 // TODO: Add this to the specification. 6 // TODO: Several callers rely on this not using scratch registers, so we use 1 // TODO: evaluate the effect of sync() and uncomment if 1 readonly_ret: None, // TODO: readonly_ret in closure convert 1 // TODO: The specification is wrong in several respects concerning 1 /* TODO: support */ 1 // TODO: Need IntlCalendar implemented first 3 (* TODO: this will likely have to become more intelligent *) 1 TODO: 1 (* TODO akenn *) 1 (* TODO: "use" for closures *) 1 * i.e. new classname, TODO: T41190512 *) 1 (* TODO TAST: avoid repeated generation of block *) 1 // TODO: Give a warning? 1 * TODO: decide if we want to handle exact type equality or supertypes. 1 // TODO: What about something like for::for? Is that a legal type constant? 1 // TODO if you are clever you can make the macro do these 1 // TODO: the above is true for settings whose value we burn directly into the 1 // token. TODO: (kasper) T40381519 we may want to change this behavior to something more 1 (* TODO: revisit *) 1 TODO: binding into the scope chain introduced; if the latter then 1 // TODO: We might consider changing the codegen so that the finally block 1 /* TODO: support */ 1 /* FIXME: this code is not multibyte aware! */ 1 // TODO: set this correctly 2 // TODO: Can the list have a trailing comma? 2 (* TODO: make this exhaustive *) 1 (* TODO: fail if root_decl_reference returns None *) 2 (* TODO: delete this check *) 1 // TODO: Update the specification with these rules. 1 // TODO: Can the list be comma-terminated? If so, update the spec. 1 * TODO: this will replace xenon_get_data() 1 // TODO: add all status codes 1 * TODO TAST: is this right? e1 will get evaluated more than once 1 // TODO: This isn't right. Pass flags to the lexer. 1 // TODO: Is this correct? Or do we need to allow "super" as well? 1 (* FIXME it seems like this function is only for 1 // TODO: optimize these 1 /* TODO: support */ 2 // TODO: When systemlib supports closures 2 // TODO (T69662957) must fill type args of Tgeneric 1 # fixme.py -- Adds HH_FIXME annotations in your code to clean up after a new 1 /* TODO: Only one "types" is allowed */ 1 (* TODO: recognize "self::F"... The shape key "shape(self::F => 1)" is 1 // TODO is the memcpy even necessary? 1 (* TODO: ensure `ft_params`/`ft_where_constraints` don't affect subtyping *) 1 (* TODO: need to update userland tooling? *) 1 // TODO remove this when strobelight has its own surpriseFlag 2 (* TODO: handle required hard splits *) 1 /* FIXME: some locale free implementation is 1 // TODO ERROR RECOVERY is unsophisticated here. 1 // TODO: Support server IP whitelist. 1 (* TODO: unclear if we need to handle type constants. Convert them to constraint types? 1 (* TODO: only consider existing candidates to report a summary *) 1 // TODO: The list of attributes may NOT be terminated with a trailing comma 1 (* TODO: temporary way to break the module abstraction. Remove after 1 // TODO: SPEC ERROR: PHP allows the entire expression list to be omitted, 1 // FIXME: Use a consistent constant/enum 1 * TODO finish this macro and start using it! 1 // TODO: Hack requires a visibility modifier, unless "static" is supplied, 1 | Hint_::Hdynamic => panic!("TODO Unimplemented Did not exist on legacy AST"), 1 // TODO: The list has to be expressions which evaluate as variables; 1 // FIXME: add native builtin, use that instead 2 // TODO: We require that it be either all literals or no literals in the 1 // TODO: Give an error for nested nominal functions in a later pass. 1 // FIXME: leaks memory if generics were given but not expected nor pushed. 1 * TODO: this error message is unhelpful if the format 1 // TODO: Handle above trash (T29639296) 1 // TODO: Should we allow a trailing comma? 2 // TODO what does this bool even meean. Pretty sure it is the same as the 1 /// TODO: this really belongs in def. 2 /* TODO: This is *bizarre* codegen for a while loop. 1 // TODO: is this always 1? 1 (* TODO: do we want to introduce a Cls.enum_class_type ? *) 1 _ => Err(Error::fail(format!("TODO Unimplemented: Cannot print: {:?}", expr)).into()), 1 // FIXME: Array_get ((_, Class_const _), _) is not a valid lvalue. *) 1 // TODO Task #2584896: o_invoke and o_invoke_few_args are deprecated. These 1 //TODO: Improve. It's a bit silly having to use a std::vector::Vec 2 | TODO -> aggregation_of_todo_aggregate 1 // TODO: Update the specification of the grammar 1 (* TODO: We should have a per file config *) 3 * TODO: Figure out what's happening. *) 1 (* TODO T44306013 *) 1 // TODO: Increase the coverage of PrecedenceParser.expects_next, so that 1 // TODO: Make the parse tree for the leading word in the expression 1 // TODO: This is a bit wasteful. If we had iter_from_ocaml_set_in 1 // TODO: this code seems to be dead, as the only callers of p_fun_hdr come from MethodishDeclaration and FunctionDeclaration 1 (* TODO: do not crash, but surface this to the client somehow *) 1 // TODO: Check that the given and name_text are the same. 1 (* TODO: Different styles of list seem to only happen in predetermined places, 2 // TODO: What is this b-opt? We don't lex an optional 'b' before a literal. 1 // TODO: We lex and parse the spaceship operator. 1 // FIXME: This is not safe--string literals are binary strings. 4 (* TODO: figure out how to share this logic with chunk_group.ml *) 1 TODO: Later, we'll have to consider the regular type as well, for example 1 // TODO: assert that fp is the same value stored in rvmfp here. 1 (* TODO It's annoying to have to carry this giant 'env' everywhere. Can we 1 (* FIXME: Should be possible to write a true (more efficient) endo 1 (* TODO: turn allow_trailing:true when HHVM versions that don't support 1 (* TODO: Do we need to update leading_width and offset? *) 1 // TODO: this should be TBottom, but HHBBC straight up chokes on stuff like 1 /* TODO: namespace ??? */ 1 // TODO: we don't need unnamed local if the target is a local 1 // TODO: Move dummy variable to tasl.rs once it exists. 2 // TODO: This fact is not represented in the specification; it should be. 1 // TODO: The parenthesized list of children expressions is NOT allowed 1 // TODO: use the fact that this is a readonly call in HHVM enforcement 1 * TODO: T112774575 remove isTest flag when HackC Translator is complete 1 * expands type constants. (TODO: work out a better way of handling this) 1 (* TODO check return type *) 1 (* TODO: do we need to distinguish ? *) 1 // TODO: Fixme under MSVC! 1 // TODO: Should XHP comments be their own thing, or a kind of 1 (* FIXME: Move as two functions to Ast_defs? *) 1 // TODO: `id` could be an alias for something without reified generics, 1 FIXME: produce error message *) 1 (* TODO T112092175: export require class requirements to Facts *) 1 // TODO: T88207956 consider all the values. 1 /* TODO: support */ 1 /* TODO: may be "nil" is not OK? */ 1 // TODO (t3443556) Bytecode repo compilation expects that any errors 1 /* TODO: not all elements converted. we need to prune the list - cc */ 1 // TODO: tune this threshold based on perf results 1 (** Name of the transport channel used by remote type checking. TODO: move into remote_type_check. *) 1 // TODO: are isUploadedFile/moveUploadedFile required to support rfc1867? 1 (* TODO: remove_hhi *) 1 // TODO: We need to produce errors if there are unbalanced brackets, 1 // TODO: let's remove gratuitous mallocs and copies please 1 // FIXME: hphpd can be initialized this way as well 1 // TODO: Extend this to support printing the target address. 1 (* TODO: what to do if decl not found? *) 1 (* TODO: Handle more complex cases *) 1 * interp. FIXME: Unfortunately, right now, in an unlikely race 1 // TODO: Do persistent auto-reconnect 1 // TODO: TokenKind::Unset is case-insentive. Should non-lowercase be an error? 1 c_where_constraints = (* TODO *) _; 1 // TODO: elseif 1 // TODO: cache the Oids somewhere 1 // TODO: Make an error-detecting pass that gives an error if the left-hand 1 /* TODO: produce warning invalid ns */ 1 false, // TODO: Readonly iterator assignment 1 (* TODO: revisit this for long names *) 1 (* TODO: ?el is never set; so we need to fix variadic use of lambda *) 1 // FIXME: ifThenElse() doesn't save/restore marker and stack boundary. 1 (* TODO: should we be taking the intersection of the errors? *) 1 /* TODO: support */ 1 // FIXME: HHVM doesn't support the disable_functions directive. 1 (* TODO: can this actually generate an error? *) 1 // TODO We should filter only to hhvm samples which directly 1 /// TODO: T87242856 1 // TODO: take advantage of classHint if it is unique, but className is not 1 /// @TODO: work out what to do about this! 2 // FIXME: This is not safe--string literals are binary 1 ("sync-dir", value(&dummy3), // TODO: T115189426 remove this 1 // TODO: Double quoted string are only legal 1 // TODO: This puts the error in the wrong place. We should highlight 2 // panic!("TODO: uncomment after D19350786 lands") 1 /* TODO: could expand this to make a callback into PHP user-space */ 1 (* TODO: after unit tests, make this idempotency a property of method split *) 1 * position of HH_FIXME comment 1 // TODO alignment of heap objects based on size classes. 1 // TODO: enforce that this returns readonly 1 TODO: inside the body, or does it have to go in a use($$) clause? 1 module: None, // TODO: grab module from attributes 1 // TODO (kasper): T52404885: why does removing to_string() here segfaults 1 // TODO: ERROR RECOVERY: consider bailing if the token cannot possibly 1 // TODO: Update grammar for readonly keyword 1 // FIXME: This is not safe--string literals are binary strings. 2 // TODO: Consider producing a warning for a malformed unicode escape. 1 (* TODO - this needs to somehow(?) account for the fact that the old 1 /* TODO: microsecconds */ 1 /* TODO: Add Support for not Intel compilers for IA64 */ 1 /* TODO: Temporary for compatibility! */ 1 * TODO: having the interpreter visit blocks when they are unreachable still 1 /// TODO: This is only created in naming, and ought to happen in 2 // TODO: Deal with the constraint 1 (* TODO: we could do better here in case only in one side. *) 1 (* TODO: respect params.context.include_declaration *) 1 // TODO: update pos_name to support prefix 1 /* TODO: Add gdImageGetRowPtr and works with ptr at the row level 2 // FIXME: fp may be nullptr, in which case this is an equivalent of none() 1 (* TODO: This could be less conservative: we only need to account for 1 // FIXME: This is not safe--string literals are binary strings. 4 // TODO: is get getFiles required? 1 // TODO: Here we parse a type list with one or more items, but the grammar 1 // TODO: Error recovery is pretty weak here. We could be smarter. 1 (* TODO: backend should be stored in [env]. *) 1 FIXME: we need to separate our instantiability into two parts. Currently, 1 (* TODO: This is obviously incomplete. It just adds a constraint to each 1 // TODO: All these scanners have to be audited for more relevant 1 // FIXME: These values are hardcoded from their previous IDL values 1 // FIXME: WAT? 1 (* TODO TAST: annotate with joined types *) 1 * TODO: identify under what circumstances this reduction is complete. 1 // FIXME: This is not safe--string literals are binary strings. 1 (* TODO: Make these not default to positioned_syntax *) 1 (* TODO: move this to places that write this file *) 1 (* TODO: Port over the namespace completion code from autocompleteService.ml *) 1 (* TODO: rethink possible one line bodies *) 1 // TODO awaitable-creation-expression must not be used as the 1 // TODO: Comma 1 // TODO: error, or add it to the specification. 1 // TODO #2821803: Figure out whether this is caused by another bug 1 (* TODO: we're using itemType (left column) for function return types, and *) 1 // TODO: SPEC ERROR: The spec states that the only legal enum types 1 // TODO: Break this up according to classish type 1 // TODO: Not enough info 1 // TODO: Handle modification of slot ordering during serde. 1 // TODO: Handle above trash. 1 /* TODO: lang attribute */ 1 // TODO: (Ericblue) output messages need to be encoded in UTF-8 1 TODO: get rid of unsafe_to_raw_pos before changing implementation of t. T87777740 *) 1 // TODO: in which case the method is considered to be public. Is this 1 // TODO add second pass checking to ensure ellipsis is the last arg 1 // TODO: Implement HostBreakpoint on a64. 1 * TODO: there are many more unions to implement yet. 1 // TODO: There could be situations where we have good evidence that a 1 (* TODO: Catch all exceptions that make it this high, log them, and exit with 1 // TODO: else 1 // TODO: Do we even recurse on expressions? 1 // TODO: Fixme under MSVC! 2 * because legacy representation of Taccess was using lists. TODO: implement 1 (* TODO verify or log if there are unused rules *) 1 // TODO: we really ought to pull out checking of whether a prop is supported 1 // FIXME: This is not safe--string literals are binary strings. 2 (* TODO: IFC should consider spliced values too *) 1 // FIXME: each parameter info should be HNI with a handle to the 1 c_typeconsts = (* TODO *) _; 1 // TODO: Update grammar for inout parameters. 3 // TODO (kasper): implement LazyTrivia 1 // TODO if we every start profiling Windows 1 (* TODO: Check with @fzn *) 1 // TODO: Can the type name be of the form "foo::bar"? Those do not 1 // TODO: handle collisions 1 // TODO: add other modes like "Advanced" or "Deprecated" if necessary. 1 * TODO: figure out something about serialized form - see comment in apc-object 1 TODO: Syntactically this can only be an Lvar/This/Lplaceholder. 1 (* TODO: handle const attribute *) 1 TODO: anonymous functions? Does the $$ automatically end up in scope 1 // TODO: we need to emit doc comments for each property, 1 * TODO: Parser for things other than scripts: 1 // TODO: This is one of the rare cases in Hack where a comma-separated list 1 (fun p _decl -> (* TODO *) of_raw_pos p) 2 * TODO: Figure out what's happening. *) 1 TODO: this really belongs in def. 1 // TODO: Consider producing an error if the digits are out of range 1 TODO: Switch to FFP Autocomplete to avoid doing this file edit *) 1 // TODO: Similarly for any non-valid thing following the left bracket, 1 (* TODO: Revisit *) 1 // TODO: We are putting the name / variable into the tree as a token 1 | LBRACE statement_inner* RBRACE expr_argument_list { () } (* FIXME *) 1 (* TODO: Make sure the pipe exception is really about this client. *) 1 // TODO we can do `return gen(env, Unreachable, ASSERT_REASON);` here 1 // FIXME: HHVM doesn't support this 1 TODO: the existing mechanisms should be sufficient. Either way, 1 (* TODO: is this the right whitespace strategy? *) 1 (* TODO: Eliminate code duplication *) 1 // TODO: ERROR RECOVERY is not very sophisticated here. 1 // TODO: We might want to fix this because this is very strange. 1 // TODO: Assert that new head has no leading trivia, old head has no 1 // TODO: oxidized::aast::TypeHint (along with most oxidized::aast types) 1 // TODO: then should we make it illegal in strict mode? 1 | DollarOperator | UnaryPlusOperator | UnaryMinusOperator // TODO: Correct? 1 // TODO: This allows "noreturn" as a type argument. Should we 1 /*FIXME: minLength=1 */ 1 (* TODO: Consider basing the version number on an auto-generated 1 // TODO (T61651936): Disallow implicit conversion to string 1 // TODO: Other widths could be added here, as the implementation already 1 // TODO figure out what global const differs from class const 1 /*FIXME: how to pass method name if style is SOAP_DOCUMENT */ 2 /* TODO: External href....? */ 1 // TODO: we might consider creating a SymbolBuilder type 1 (* TODO: consider adding parent rules *) 1 (* TODO: report error in strict mode *) ignored_expr_ p 1 * FIXME: This implementation is pretty horrible and should be rewritten 1 // TODO: The list of values can have a trailing comma. Update the spec. 1 (* TODO: that might actually not be true during initial merging, but let's fix that later. *) 1 TODO: There's nothing here that's unique to editable trees; this could 1 // TODO: Figure out why TInt asserts here 1 // FIXME: HHVM doesn't support extension info 2 TODO: If the former, then we'll need to explicitly copy the active $$ 1 _ => return Err(Error::fail("TODO Unimplemented unexpected non-CIexpr").into()), 1 /* TODO: support */ 4 // TODO: t5284137 add some tests for abortRequest 1 // TODO: ctx contains caller info, make inlining cost calc caller agnostic 1 // FIXME: This stub is hot, so make sure to keep it small. 1 (* TODO: this find_opt should not be necessary since we initialize the 1 (* TODO: do we need this? *) 1 TODO: It's a bit confusing that quarantining is predicated upon ctx, and 1 // @TODO: this is quite ghetto right now, but is useful as is to 1 // TODO (T29639296) 3 (* TODO: pc_pols should also flow into cty because the condition is evaluated 2 (* TODO see comment at beginning of function *) 1 // TODO: proxygen only supports downstream keep-alive 1 // TODO: The original Hack and HHVM parsers accept "isset" as an 1 // this a simple type. TODO: Should this be an error at parse time? what 2 Err(Error::fail("TODO: Only expected CIexpr in class_const").into()) 1 (* TODO: make a new rule strings string *) 1 /* TODO: try and force the stream to be FILE* */ 1 (* TODO: If we later add fields to ft, they will be forgotten here. *) 1 * TODO: \x7f-\xff 1 (* TODO: rather than writing to a ref cell from inside the `on_tyvar` 1 * TODO Areas for future improvement: 1 //TODO: to_json require some unimplemented methods in syntax.rs, particularly 1 // FIXME: This assumes that smashable calls and regular calls look the 1 (* TODO: this find_opt should not be necessary since we initialize the 1 (* TODO: It may be worthwhile to investigate how Thrift describes data types 1 (* TODO: display all the lines, showing the underline on all of them. *) 1 (* Error codes that can be suppressed in strict mode with a FIXME based on configuration. *) 1 // TODO: mangle the namespace and name? 1 // TODO: check name space separately 1 List.filter (fun x -> List.mem TODO x.aggregates) schema 1 <<__SupportDynamicType>> // TODO: determine whether it's safe to mark this as unconditionally supporting dynamic 1 (* TODO should string be some custom data type? *) 1 readonly_this: None, // TODO: readonly_this in closure_convert 1 // TODO: Remove this; redundant to 1009. 1 context->onRequestShutdown(); // TODO T20898959 kill early REH usage. 1 // TODO: Better error message. 1 # TODO: Mark this somehow? 1 (* TODO: Better way to accumulate a string? *) 1 // TODO: This is not in the spec at present. We should either make it an 1 // TODO: get a dedicated surprise flag to avoid colliding with xenon 1 // TODO: T112774575 remove isTest flag when HackC Translator is complete 1 TODO: Remove this check and figure out how. *) 1 // TODO: Refactor ClassId creation with new_obj 1 // TODO: This will need to be fixed to allow situations where the qualified name 1 // TODO: handle priorities 1 * TODO: Figure out what exactly a postfix expression is and when one is valid 1 TODO: What is the interaction between the pipe operator and nested 1 (* TODO: Remove the test for sound dynamic. It is never ok to put 1 // TODO: This should be an error in strict mode. 1 // TODO: Deal with hit condition breakpoints. 1 // TODO: If we make this illegal at parse time then we can remove this pass. 1 // TODO: This codegen is unnecessarily complex. Basically we are generating 1 // TODO: Give an error. 1 /* FIXME: Make the string dynamically allocated so that e.g. 1 // TODO: Find a more elegant way of defining these. 3 // TODO (partisan): Deprecate in favor of more clear for extrnal users setHeader 1 case AnnotMetaType::Classname: // TODO: T83332251 1 // TODO: Update the spec with reified 1 // TODO: Make a "position" type that is a tuple of source and offset. 1 // TODO make these PHP_INI_ALL and thread local once we use them 1 // FIXME: This is not safe--string literals are binary strings. 2 // TODO: Move to util/folly? 1 (* FIXME: support non-empty type arguments of Habstr here? *) 1 // TODO: Operand to ++ and -- must be an lvalue. 1 (* TODO: revisit this *) 1 // TODO: communicate this without looking at the name 1 // TODO: Produce an error if the braced syntax is used in Hack. 1 * TODO: this will replace xenon_get_data() 1 // TODO: Enforce these rules by producing an error if they are 1 /* UTODO: keep compatibility with is_numeric_string() here? */ 1 // TODO: Consider producing an error for a malformed hex escape 1 // TODO: This method can only accept values of 'space' that can be encoded in 1 (* TODO: This code is duplicated in the positioned syntax; consider pulling it 1 // TODO: Produce an error if this is used in an expression context 1 // TODO: implement IDebuggable 1 // TODO: We must allow TRUE to be a legal enum member name; here we allow 2 (* TODO: iterate over the returned error rather than side effecting on 1 # TODO: Find out any Boost version constraints vs clang support. 1 place where we catch all exceptions and we need to ignore this one. TODO: clean that up somehow *) 1 // TODO: (Ericblue) NOT IMPLEMENTED 1 //TODO: security checking 1 // TODO: ML equivalent has this as an implicit parameter that defaults to false. 1 * TODO TAST: 1 (* TODO akenn: Should we move this to the class_get original call? *) 1 // TODO: isXenonActive() needs to check the request thread and not the 1 _ => w.write_all(b"TODO Unimplemented NYI: Default value printing"), 1 (* TODO with Tclass, union type arguments if covariant *) 1 (* TODO: retrieve the actual signature including name+modifiers *) 1 // TODO: We allow const names to be keywords here; in particular we 1 // TODO: The list of attrs can have a trailing comma. Update the spec. 1 // TODO: handle * 1 // TODO: What about "{$$}" ? 1 //TODO: T19445287 implement this as the fuzzer finds more bugs 1 // TODO: This is listed as unsupported in Hack in the spec; is that true? 1 /* TODO might not be needed */ 1 (* TODO: clean up *) 1 * FIXME: The current system always maintain the heap in a well formed state, 1 (* TODO: let's eliminate hh_format, and incorporate hackfmt into the *) 1 /* TODO: some smart thing that avoids duplicating the value in the 1 * FIXME: The current chunking system might be incorrect if the incremental 2 (* TODO for now check_expr is done with a visitor to deal more gracefully 1 // TODO: move to typing_defs_core_impl.rs once completed 1 // TODO: Consider producing a warning for a malformed unicode escape. 1 // TODO: Detect if expression is not const 1 (* TODO: Trivia *) 1 (* TODO: this is probably wrong, figure out what this means *) 1 # FIXME: This probably should be set for both cases 1 /* TODO: Array index overflow */ 1 // TODO Add an error if PHP style <> is used in Hack. 1 "hhbc") // TODO: T115189426 remove this 1 // TODO: Create the grammar and add it to the spec. 4 // TODO: We need to verify in a later pass that the expression is a 1 // TODO: We may wish to parse "T $x" and give an error indicating 1 // TODO: Can *any* expression appear after the ... ? 1 // TODO: Give parse error 1 // FIXME this really shouldn't be used in the HSL... 1 " (mode) remove dead HH_FIXME for any error code < 5000 " 1 /* TODO: get rid of "bogus".. ither by passing in the already created xmlnode 1 (* TODO TAST: consider introducing a "null" type, and defining ?t to 1 // TODO: Add an error to a later pass that determines the value is 1 (* TODO: Send this to client so it is visible. *) 1 // TODO: extend hhbc with bitmap of passed generics, or even better, use one 1 assertx(false); // TODO: support percentage 1 (* TODO: correctly handle spacing after the closing brace *) 1 tp_parameters = (* TODO high-kinded generics? T69931993 *) _; 1 (* TODO: our handler should really handle an error response properly *) 1 // FIXME: the MemoryManager logic is not reliable, especially when 1 // TODO: Produce an error for brace case in a later pass 1 * introduced by PHase.localize. TODO: avoid this requirement *) 1 // TODO: The False case seems to sometimes be b:0 and sometimes i:0. Why? 1 (** TODO: Remove use of `User_error.t` representation for nested error *) 2 // TODO: What about newlines embedded? 1 (* TODO: support non default security lattices *) 1 * TODO: consider relaxing this behaviour *) 1 // TODO: Handle coercions, which require dependent mystery boxes. 1 // TODO (T29639296) Exploit class pointer further 1 // TODO: Put this in the specification 2 * TODO write a proper accumulator visitor `accum` inheriting from iter and 1 (* FIXME: When we have a type parameter with no upper bounds, it may be 1 (* TODO: shouldn't we be checking this hint as well? *) 1 (* TODO: handle function parameters with <> *) 1 ret.set(s_len, (int64_t)col->maxlen); /* FIXME: unsigned ? */ 1 ~return_disposable:false (* TODO: deal with disposable return *) 1 // TODO: Add this to the specification 5 // TODO: should no longer happen 1 FIXME: This function cannot return correct bounds at this time, because 1 * TODO: Using load size (ldr[bh]?), apply scaled address if 'disp' is unsigned 1 * TODO improve that. *) 1 ~mode:FPnormal (* TODO: deal with `inout` parameters *) 1 (* TODO: or is parameter, or is inside if/switch/while/etc. clause *) 1 (* TODO: deal with remaining unsolved CCs. 1 /* TODO: might need to pull statement specific info here? */ 1 // a simple type. TODO: Should this be an error at parse time? what 1 // TODO: Do we also need to allow "= type-specifier" here? 1 line number guarded by HH_FIXME => 1 // TODO: add is_sorted assert to make sure this behavior is preserved for labels 1 TODO: This is only created in naming, and ought to happen in 1 // TODO: Can the list be comma-terminated? 1 // TODO: What about = ? 1 // TODO: The spec is incomplete; we need to be able to parse 1 /* TODO: Or tie in with other intrinsics and post-process to List */ 1 (* TODO: Rename this; generic type specifiers are also used for 1 // TODO: Different error? 1 (* TODO: c_reqs should be checked too. Problem: that causes errors in un-fixmeable places. *) 1 // TODO: support rfc1867 1 // FIXME: backward compatibility hack for places that were checking for 2 (* FIXME fun fact: 1 // TODO: this is bizarre codegen for a "for" loop. 1 case KindOfLazyClass: return false; // TODO (T68823958) 1 // TODO: Add call-convention-opt to the specification. 2 TODO: ericlippert 1 (* TODO: use the telemetry *) 1 // FIXME: add native builtin, use that instead. 1 // TODO: This could be poor recovery. For example: 1 // TODO: Check whether we also need to handle 1 atc_default = _ (* TODO *); 1 (* TODO: I can't figure out time. See https://github.com/janestreet/memtrace/issues/14 *) 1 type UnitFuncStr = string; // maybe fix? see TODO in tc-print.cpp 1 value(&dummy)->default_value(true), // TODO: T115189426 remove this 1 * TODO: don't do this, instead use subtyping to push intersections 1 // TODO: If it is formally supported in Hack then update the spec; if not 1 // TODO: The HHVM emitter sometimes emits seemingly spurious 1 // TODO: Hack is the wrong place to detect circularity (because we can never do it completely soundly, 1 (* TODO: These throw typing errors instead of naming errors *) 1 // TODO: This is wrong; we have lost the attribute specification 1 // TODO T115356820: This is temporary until parser support is added 1 /// TODO: Syntactically this can only be an Lvar/This/Lplaceholder. 2 // FIXME: This returns the virtual timer which is not exactly 1 (*TODO: error *) 1 // TODO: Share the representation from decl_defs 2 # - Will insert HH_FIXME comments in the body of XHP elements, where they will 1 (* TODO optimize string concat *) 1 // TODO: The spec is wrong; it implies that a statement must always follow 2 // TODO: This implies that a cast "(name)" can only be a simple name, but 1 (* TODO: pc should also flow into cty because the condition is evaluated 1 // TODO: Should probably have ... also but we are not doing that in ocaml 1 // TODO: There is no compelling reason to not allow a trailing comma 1 /* TODO: oim and nim in the lower level functions; 1 // TODO: this logic should be moved to SyntaxTrait::position, when implemented 2 (* TODO: Consider storing these in the provider context or decl-service 2 /* TODO: MCAST_* constants and logic to handle them */ 1 | None -> (* TODO T81321312 *) false 1 // TODO: PHP allows a case to end in a semi; Hack does not. We allow a semi 1 // TODO: Consider producing an error if there are no digits. 1 // TODO: Ideally this wouldn't be necessary here, debuggers should 1 // TODO (T29639296) 1 (* TODO: this is probably wrong, since for persistent client we'll 1 // TODO make non-nullable once Thrift files are fixed 1 // TODO: consider adding cache simulation to ensure every address run has been 1 // TODO: Once top level code is entirely dead it should be safe to always 1 (* TODO TAST: consider checking that the integer is in range. Right now 1 // TODO: update the spec to reflect that echo and print must be a statement 1 // TODO: Support more types of function calls 1 (* TODO: error if both Governed and InferFlows are attributes on a function or method *) 1 // TODO: What if it's not a legal statement? Do we still make progress here? 1 // TODO: A backslash followed by something other than an escape sequence 1 // TODO: Record this 'instruction' as data, so that it can be disassembled 1 // TODO: categorize failure 1 // TODO: OCaml decl produces SFlitStr here instead of SFlitInt, so 1 /* FIXME: This doesn't cope with bzip2 */ 1 (* TODO: write some other stats, e.g., the number of names, the number of errors, etc. *) 1 // * A pragma to turn checks off (HH_FIXME and HH_IGNORE_ERROR) is 1 (* TODO: Notify the server monitor directly about this. *) 1 | TokenKind::Double // TODO: Specification does not mention double; fix it. 1 (* TODO *) 2 ("gen-stats", value(&dummy2)->default_value(false), // TODO: T115189426 remove this 1 // TODO: Produce an error later if the expressions in the list destructuring 1 // TODO: The left hand side can in fact be any expression in this parser; 1 // TODO: This is wrong. The variable here is not anexpression* that has 1 "TODO Unimplemented unexpected non-CIexpr in function pointer", 1 // TODO: Named exception breakpoint filters not supported yet. 1 /* FIXME: better error (a..b..c is the only left possibility?) */ 1 /* TODO: support */ 17 # TODO: account for tab size? 1 (* TODO: T71614503 print explicit type arguments appropriately *) 1 | s -> aggregation_fail Def.TODO s 1 // TODO:(shiqicao) move this function to SyntaxTrait, see D18359931 1 // TODO: change unesc_dbl to &[u8] -> BString 1 // FIXME: gracefully shut down the m_handlerThread 1 // TODO: t6019406 use surprise checks to eliminate BB mode 1 // TODO: utilize caller_readonly_opt here for method calls 1 // TODO (T69662957) must fill type args of Tgeneric 1 * TODO: replace this with a HH\Asio equivalent 1 // TODO #6509338 exactly scan the php stack. 1 (* TODO: cleanup *) 1 // TODO: Give an error in a later pass if there are not exactly two members. 1 // TODO: PHP allows a default to end in a semi; Hack does not. We allow a semi 1 // TODO: Similarly we might want to preserve the structure of 1 // FIXME: rewrite this once we have OS\getaddrinfo 1 // Here's a reasonable compromise. (TODO: Review this decision.) 1 // TODO: handle q=0 disabling 1 (* TODO: also handle <> *) 1 * TODO: improve this check so the server only restarts 1 // FIXME: This is not safe--string literals are binary 1 // TODO: Clobber all caller-saved registers here, to ensure no assumptions 1 readonly_this: false, // TODO readonly emitter 1 // TODO ERROR RECOVERY could be improved here. 1 # TODO (Re)Check compiler features on (every?) release ??? 1 (* TODO: (hverr) T60273306 Normally the following should hold as well: 1 // TODO: This business of allowing ... does not appear in the spec. Add it. 1 * their signature, so they are not considered here. TODO: T41093452 *) 1 // TODO: '-'?P([0-9]+Y)?([0-9]+M)?([0-9]+D)?T([0-9]+H)?([0-9]+M)?([0-9]+S)? 1 (* FIXME: I guess in global inference mode, we should just reject 1 // TODO: This code does not consider using X/W register overlap to support 1 * line number guarded by HH_FIXME => 1 // TODO: Update the grammar comment above when the specification is fixed. 1 // TODO: An error case not caught by the parser that should be caught 1 /* TODO: req_class_ancestors field has been added to support the experimental 1 * TODO: Make sure the pipe exception is really about this client.*) 1 // sad panda copy. TODO (t4362832): change sendImpl to take IOBuf 1 | _ -> (* TODO *) super#on_Binop env bop expr1 expr2 1 // TODO: Is this invariant what we want? We could preserve the parse of 1 // TODO: should this throw? 1 (* TODO: ideally refactor so the last test is not systematically performed on all methods *) 1 readonly_ret: None, // TODO readonly emitter 1 (* TODO see comment at beginning of function *) 1 // TODO: Update the spec. 1 // TODO: rewrite to_ocaml iteratively & reduce it to "stack_size - MB" as in HHVM 1 // TODO: move this. We just know that there are no iterators in 86methods 1 // slash star [whitespace]* HH_FIXME [whitespace or newline]* leftbracket 1 (* TODO: Make builder into an instantiable class instead of 1 // TODO: Should this be a utility function? 1 TODO: find a better way to represt the rules empty case 1 * TODO When we typecheck lambda or lets, we'll have to do better *) 1 (* TODO raise exception. *) 1 // TODO: VisitLoadStoreRegisterOffsetUnpriv. 1 /* TODO: support */ 1 // TODO: experiment with disabling this chunked flag and letting 1 // TODO (T115359287): We will revisit whether modules should be first class 1 // TODO: Death to PHPisms; keywords as namespace names 1 (* TODO: add a new reason with positions of merge point and possibly merged 1 // TODO: Is this also true of whitespace within XHP comments? If so then 1 // TODO: set the following fields correctly 2 // TODO: Implement Advanced SIMD data processing instruction decode. 1 // TODO: SPEC ISSUE 1 // TODO: Build a smarter message in this case (using panic::set_hook?) 1 // TODO: desired? Resolve this disagreement with the spec. 1 // TODO: does clang define __GNUC__ ? 1 // TODO: Is it right to return Some in these cases? 1 * TODO: decide what we want to name the pattern for decl types, if we create 1 // TODO: We parse any type as the class name type; we should write an 1 // TODO: We assume little endianness, and the way in which the members of this 1 // TODO: Cache the results of this function somewhere 1 Hint_::Habstr(_, _) => panic!("TODO Unimplemented: Not in the original AST"), 1 (* FIXME: Ideally, we would like to fail here, but sometimes we see type 1 // TODO: The original Hack parser accepts "async" as an identifier, and 1 (* TODO there shouldn't be any need for 'env' because there shouldn't be 1 * TODO: enforce SingletonMemoizeParam in some way in runtime/typechecker 2 // TODO: refine this heuristic using real world data. 1 (* FIXME: It is bogus to use strings here and put them in Tgeneric; one 1 // TODO fix folly to better detect error cases (currently I think it just 1 // TODO: consider relaxing this behaviour 1 (* TODO: iterate over thee returned error rather than side effecting in 1 (** Get all errors emitted. Drops errors with valid HH_FIXME comments 1 (* TODO: better to report time that hh_server has spent initializing *) 1 /// TODO: T38184446 this is redundant with ValCollection/KeyValCollection. 2 // TODO make arrays static 1 (** TODO: Remove use of `User_error.t` representation for nested error & 1 // TODO: HHVM requires that there be no trivia between < and name in an 1 position of HH_FIXME comment *) 1 // TODO: The original Hack and HHVM parsers accept "eval" as an 1 break; /* FIXME: the rest of body is ignored */ 1 (* TODO: should we be taking the intersection of the errors? *) 2 intptr_t disp; // TODO #4613274: should be int32_t 1 // TODO: This shouldn't be a decorated *expression* because we are not 1 // TODO: What about "require extends :foo;" ? 1 * FIXME: Currently this method does almost nothing. 1 // FIXME: This is not safe--string literals are binary strings. 2 (* TODO Probably impossible, should check that *) 1 (* TODO TAST: type refinement should be made explicit in the typed AST *) 1 // TODO: The direct decl parser should return decls in the same order as 1 | Hint_::Hdynamic => panic!("TODO Unimplemented Did not exist on legacy AST"), 1 // TODO: This parser is only used by the ffp tests, and should be moved out of 1 // TODO: Obtain better values for these, based on real-world data. 1 (* TODO: Avoid Tany annotations in TAST by eliminating `make_call_special` *) 1 /* FIXME: Read file names and sort them to prevent 1 readonly_ret: None, // TODO: awaitable creation expression 1 // TODO t7925358 m_defEnc, m_typemap, m_sdls, and m_typemaps hold 1 (* TODO: should we be taking the intersection of the errors? *) 3 // TODO: Is this right? Suppose we have "{${x}". Is that the same 1 (* TODO: generalize the arity check / argument check here to handle attributes 1 false, // TODO readonly load list elements 1 // TODO: make wrap `type_` `doc_comment` by `Rc` in ClassConst to avoid clone 1 | _ -> (* TODO *) super#on_expr env texpr 1 // TODO: We allow "include" and "include_once" as well, which are PHP-isms 1 | TODO -> "todo_aggregate" 1 // TODO: Should we overwrite the taint on the value that gets pushed 1 // TODO: Keep more detailed error information in the BreakPointInfo and emit 1 // TODO (T61651936) 1 // TODO: shiqicao make NONE static, lazy_static doesn't allow Rc 1 * certain cases this fails (e.g. a generic type grows unboundedly). TODO: 1 // TODO: Implement Advanced SIMD load/store instruction decode. 1 * TODO: we should push translateRegion and selectTracelet into this module, so 1 // TODO: is there a more Rust idiomatic way to write this? 1 // TODO: SPEC ISSUE: We allow any number of type constraints, not just zero 1 // TODO: endif 1 // FIXME: data->m_cookies is a write-only value 1 // TODO: Do we want to give a warning for an embedded zero char 1 (* TODO: Make all uses of attribute_spec consistent in the API. *); 1 // For our purposes we will just check for HH_FIXME / HH_IGNORE_ERROR; 1 * TODO: (arkumar,wilfred,thomasjiang) T42509373 Fix when when needed 1 TODO: Fix this when the full fidelity parse tree becomes the parser for type checking. 1 * TODO: don't do this, instead use subtyping to push unions 1 * TODO Avoid this conversion? Do we need the expression ids? *) 1 /* TODO: namespace isn't stored */ 1 /* TODO: Johannes, can we throw a warning here? */ 1 * FIXME: For now, the chunk is just strongly referenced during used and 1 /// TODO: any and err are a bit weird in that they are not actually types 1 (* TODO figure out why we can't reference FuzzySearchService from here *) 1 (* TODO: turn this into a bool option with None indicating 1 // TODO: Check whether shape fields need to retain order *) 1 // FIXME: add OS\getaddrinfo, kill this function. 1 TODO: T38184446 this is redundant with ValCollection/KeyValCollection. 1 (* TODO: decide what to do about methods with differing generic arity. 2 // TODO: The spec does not mention this type grammar. Work out where and 1 (* TODO: support self and static too.*) 1 (* FIXME we should probably look at the upper bounds here. *) 1 // FIXME Note that internally there is a global PCFilter for all breakpoints. 1 // TODO: The right hand side, if a name or a variable, is treated as a 1 // TODO: Consider producing a warning for a malformed unicode escape. 1 // TODO: Is this grammar correct? In particular, can the name have a 1 (* TODO TAST: generate an assignment to the fake local in the TAST *) 1 /* FIXME: */ 1 (* TODO: should remove these any cases *) 1 (* TODO: Use a magic word/symbol to identify autocomplete location instead *) 1 // TODO: While elaboration for codegen and typing is similar, there are currently a 1 // TODO: We need to produce an error in a later pass if the list is empty. 1 (* TODO: use parser options inside ctx *) 1 // TODO: What are the semantics of encapsulated expressions in double-quoted 1 (* TODO: figure out nesting here *) 1 // TODO: Can the list be empty? 1 /* TODO: support */ 1