Check argument to 'unset' in reactive mode
[hiphop-php.git] / hphp / hack / src / hh_server.ml
blob5661bcdc0b54393b98e6c876c4890303f78fce89
1 (**
2 * Copyright (c) 2015, Facebook, Inc.
3 * All rights reserved.
5 * This source code is licensed under the MIT license found in the
6 * LICENSE file in the "hack" directory of this source tree.
8 *)
11 (**
12 * Hack for HipHop: type checker daemon code.
14 * See README for high level overview.
16 * Interesting files/directory:
17 * - hh_server.ml: contains mostly the ugly inotify code.
19 * Parser code:
20 * The parser was written using yacc, now it's a recursive descent parser.
21 * The lexer still uses lex. It only supports a subset of PHP by design.
22 * - parsing/lexer_hack.mll: the lexer (lex)
23 * - parsing/parser_hack.ml: the recursive descent parser
25 * Naming:
26 * Naming consists in "solving" all the names (making sure every
27 * class/variable/etc. are bound).
28 * - naming/nast.ml:
29 * Named abstract syntax tree (the datastructure).
30 * - naming/naming.ml:
31 * Naming operations (takes an ast and returns a nast).
32 * - naming/nastInitCheck.ml:
33 * Checks that all the members in a class are always properly initialized.
35 * Typing:
36 * - typing/typing_defs.ml:
37 * The datastructures required for typing.
38 * - typing/typing_env.ml:
39 * All the operations on the typing environment (e.g. unifying types).
40 * - typing/typing_reasong.ml:
41 * Documents why something has a given type (witness system).
42 * - typing/typing.ml:
43 * Where everything happens, in two phases:
44 * 1. type declarations: we build the environment where we know the type of
45 * everything. (see make_env).
46 * 2. for every function and method definition, we check that their
47 * implementation matches their signature (assuming that all other
48 * signatures are correct).
51 let () = HhServerMonitor.start ()