Leonardo de Moura
ac43b82668
chore(library/init): remove [derive] uses
...
Trying to minimize the number of features we need to support in the new
frontend, and attributes we need to port to the new attribute manager.
2019-06-20 10:53:15 -07:00
Leonardo de Moura
08cdb757b4
feat(library/init/lean/environment): add Environment.addAndCompile
...
To fix `BuiltinParserAttribute`, we need to be able to add auxiliary declarations programmatically.
2019-06-18 18:20:17 -07:00
Leonardo de Moura
44cba2fb3d
chore(library/init/lean/attributes): add Inhabited instance and improve stats
2019-06-06 10:39:40 -07:00
Leonardo de Moura
fd9c8a4c82
feat(library/init/lean/attributes): add pushScope/popScope, missing APIs, and @[export]
2019-06-05 13:17:25 -07:00
Leonardo de Moura
2cb50f31bd
chore(library/init/lean/environment): error message consistency
2019-06-05 09:16:10 -07:00
Leonardo de Moura
c480f1f95c
refactor(library/init/lean/environment): move scope management to attributes.lean
2019-06-04 16:50:29 -07:00
Leonardo de Moura
89ab07a4b0
refactor(library/init/lean/environment): more flexible PersistentEnvExtensionState
...
The previous API was not flexible enough to implement the new
`AttributeManager` with all "bells and whistles" we want.
For example, the new `addImportedFn` field allows us to initialize
the state for the imported entries using a `Thunk`.
2019-06-04 16:35:21 -07:00
Leonardo de Moura
3bb8826bb4
feat(library/init/lean/environment): scope management skeleton
2019-06-04 15:20:07 -07:00
Leonardo de Moura
ca12439e25
feat(library/init/lean/environment): add persistent := true parameter to addEntry
2019-06-03 17:03:46 -07:00
Leonardo de Moura
0a08569b46
feat(library/init/lean/environment): remove lazy, add addImported field to PersistentEnvExtension
...
It seems `lazy := false` is only going to be used in the attribute
manager. So, I remove it. I added a new field `addImported : Bool`
instead. An extension can specify whether `addEntryFn` is going to be
invoked or not for imported entries. `addImported := false` is useful for extensions such
as `protected`, and I will use it in the attribute manager too.
2019-06-03 16:45:27 -07:00
Leonardo de Moura
90dc3356dc
chore(library/init/lean/environment): remove unnecessary local instance
2019-06-03 16:24:36 -07:00
Leonardo de Moura
4a26f0028c
chore(library/init/lean/environment): remove unnecessary function
2019-06-03 15:17:40 -07:00
Leonardo de Moura
cd73105dff
refactor(kernel/environment,library/private,library/init/lean/environment): move main module name to header
2019-06-03 09:14:23 -07:00
Leonardo de Moura
483f1efc4d
refactor(library/init/lean/environment): move fields that are rarely used to a separate structure, add setMainModuleName
2019-06-03 08:23:00 -07:00
Leonardo de Moura
6d39b8478f
chore(library/init/lean/environment): remove dead field
2019-06-03 08:08:04 -07:00
Leonardo de Moura
7212fbab6e
perf(library/init/lean/environment): search hashmap first
...
Hypothesis: the vast majority of Environment queries try to access
imported constants instead of local ones.
2019-05-15 11:01:25 -07:00
Leonardo de Moura
70dce4b775
feat(library/init/lean/environment): show rbmap depth and hashmap bucket size
2019-05-15 11:01:25 -07:00
Leonardo de Moura
89e01368cd
fix(library/init/lean/environment): throw error if environment already contains constant
2019-05-15 11:01:25 -07:00
Leonardo de Moura
3193e91aff
feat(library/init/lean/environment): add Environment.displayStats and --stats command line argument
2019-05-15 11:01:25 -07:00
Leonardo de Moura
45eda6d81b
perf(library/init/lean/modifiers): add only local entries to state
...
We can use `getModuleEntries` and `getModuleIdxFor` to test whether a
constant is protected or not.
2019-05-14 20:30:46 -07:00
Leonardo de Moura
5fa924ff4a
feat(library/init/lean/environment): improve registerPersistentEnvExtension signature
2019-05-14 16:25:43 -07:00
Leonardo de Moura
da5b900cbd
feat(library/init/lean): add protected extension
2019-05-14 16:04:24 -07:00
Leonardo de Moura
b888b6f3b6
feat(library/init/lean/environment): process imported entries
2019-05-14 15:32:07 -07:00
Leonardo de Moura
59235c1899
chore(library/init/lean/environment): ModuleId ==> ModuleIdx
2019-05-14 13:02:43 -07:00
Leonardo de Moura
5e2111f4a4
fix(library/init/lean/environment): process entries using the order they were inserted
2019-05-14 12:53:50 -07:00
Leonardo de Moura
a24a1562ea
fix(library/init/lean/environment): import order
2019-05-14 12:41:19 -07:00
Leonardo de Moura
5df0b05cc7
chore(library/init/lean/environment): remove get_modifications_core
2019-05-14 11:26:04 -07:00
Leonardo de Moura
d5fd5d86ee
fix(library/init/lean/environment): quotInit initialization
2019-05-14 10:31:06 -07:00
Leonardo de Moura
02e558d781
feat(library/init/lean/environment): export module I/O in Lean
2019-05-14 10:15:33 -07:00
Leonardo de Moura
642c4c59bd
feat(library/init/lean/environment): support for serializing/performing legacy modification objects
2019-05-14 10:08:31 -07:00
Leonardo de Moura
dbb519d826
feat(library/init/lean/environment): importModules draft
2019-05-14 08:58:29 -07:00
Leonardo de Moura
427852d759
feat(library/init/lean/environment): add findOLean
2019-05-14 08:02:26 -07:00
Leonardo de Moura
5844913102
feat(library/module, library/init/lean/environment): add primitives for reading/writing files as compacted regions
2019-05-13 17:26:28 -07:00
Leonardo de Moura
40f9704540
chore(library/init/lean/environment): add placeholders for writing/reading .olean files
2019-05-13 15:48:23 -07:00
Leonardo de Moura
5480d22be6
feat(library/init/lean/environment): add getModifications
2019-05-13 15:18:03 -07:00
Leonardo de Moura
ec846f1552
chore(library/init/lean/environment): rename primitive
2019-05-13 15:15:29 -07:00
Leonardo de Moura
02f90485e6
feat(library/init/lean): use Environment in the new frontend
2019-05-13 13:04:57 -07:00
Leonardo de Moura
5f563973f3
feat(library/init/lean/environment): lower level interface for C++
2019-05-11 15:50:02 -07:00
Leonardo de Moura
1270353313
feat(library/init/lean/environment): add auxiliary functions
2019-05-11 14:30:06 -07:00
Leonardo de Moura
7580ad8fe8
feat(library/init/lean/environment): add auxiliary functions for refactoring environment.cpp
2019-05-10 17:02:27 -07:00
Leonardo de Moura
f5725abb57
refactor(library/init/lean/environment): cleanup and improve
2019-05-10 15:54:29 -07:00
Leonardo de Moura
e0b5f9a018
feat(library/init/lean/environment): extensions can only be registered during initialization
2019-05-10 11:51:42 -07:00
Leonardo de Moura
708bc42e0a
feat(library/init/lean/environment): generate ModuleData
2019-05-10 11:21:17 -07:00
Leonardo de Moura
f6b3bc868a
fix(library/init/lean/environment, library/compiler): compilation error and add [implementedBy] attribute
2019-05-10 07:22:56 -07:00
Leonardo de Moura
ecb50b553d
feat(library/init/lean/environment): environment extension registration and API
2019-05-09 16:53:04 -07:00
Leonardo de Moura
3b80ec89b7
feat(library/init/lean/environment): add Environment
...
TODO: finish environment extension
2019-05-09 12:30:52 -07:00