diff --git a/basis/bootstrap/stage2.factor b/basis/bootstrap/stage2.factor index 4bb4b67b2d..c8ada9e8c8 100644 --- a/basis/bootstrap/stage2.factor +++ b/basis/bootstrap/stage2.factor @@ -1,6 +1,6 @@ ! Copyright (C) 2004, 2008 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. -USING: command-line compiler.units continuations definitions io +USING: combinators command-line compiler.units continuations definitions io io.pathnames kernel math math.parser memory namespaces parser parser.notes sequences sets splitting system vocabs vocabs.loader ; @@ -75,9 +75,40 @@ CONSTANT: default-components (command-line) parse-command-line + "here0" print + { + { [ os windows? ] [ "alien.libraries.windows" ] } + { [ os unix? ] [ "alien.libraries.unix" ] } + } cond require + "here1" print + + ! { "hashtables.identity" "prettyprint" } "hashtables.identity.prettyprint" require-when + ! { "hashtables.identity" "mirrors" } "hashtables.identity.mirrors" require-when + ! { "hashtables.wrapped" "prettyprint" } "hashtables.wrapped.prettyprint" require-when + + ! { "typed" "prettyprint" } "typed.prettyprint" require-when + ! { "typed" "compiler.cfg.debugger" } "typed.debugger" require-when + { "hashtables.identity" "prettyprint" } "hashtables.identity.prettyprint" require-when + "here2" print { "hashtables.identity" "mirrors" } "hashtables.identity.mirrors" require-when + "here3" print { "hashtables.wrapped" "prettyprint" } "hashtables.wrapped.prettyprint" require-when + "here3.1" print + "summary" require + "here3.2" print + "eval" require + ! "deques" require + ! "command-line.startup" require + ! "here5" print + { "locals" "prettyprint" } "locals.prettyprint" require-when + "here6" print + { "typed" "prettyprint" } "typed.prettyprint" require-when + "here7" print + { "typed" "compiler.cfg.debugger" } "typed.debugger" require-when + "here8" print + "stack-checker.row-polymorphism" reload + "here9" print ! Set dll paths os windows? [ "windows" require ] when diff --git a/basis/colors/constants/constants.factor b/basis/colors/constants/constants.factor index 93ab176c4d..85d34b0218 100644 --- a/basis/colors/constants/constants.factor +++ b/basis/colors/constants/constants.factor @@ -1,7 +1,7 @@ ! Copyright (C) 2009 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. -USING: kernel assocs math math.parser memoize io.encodings.utf8 -io.files lexer parser colors sequences splitting ascii ; +USING: ascii assocs colors io.encodings.utf8 io.files kernel +lexer math math.parser sequences splitting ; IN: colors.constants - in-lambda? get [ :>-outside-lambda-error ] unless - scan-token parse-def suffix! ; - -SYNTAX: \|[ parse-lambda append! ; - -SYNTAX: \let[ parse-let append! ; -SYNTAX: \'let[ H{ } clone (parse-lambda) [ fry call ?rewrite-closures call ] curry append! ; - -SYNTAX: \:: (::) define-declared ; - -SYNTAX: \M:: (M::) define ; - -SYNTAX: \MACRO:: (::) define-macro ; - -SYNTAX: \MEMO:: (::) define-memoized ; - -SYNTAX: \IDENTITY-MEMO:: (::) define-identity-memoized ; - -{ - "locals.macros" - "locals.fry" -} [ require ] each - -{ "locals" "prettyprint" } "locals.definitions" require-when -{ "locals" "prettyprint" } "locals.prettyprint" require-when diff --git a/basis/locals/prettyprint/prettyprint.factor b/basis/locals/prettyprint/prettyprint.factor index f38f0d4424..5b77f3bbbd 100644 --- a/basis/locals/prettyprint/prettyprint.factor +++ b/basis/locals/prettyprint/prettyprint.factor @@ -1,7 +1,8 @@ ! Copyright (C) 2007, 2008 Slava Pestov, Eduardo Cavazos. ! See http://factorcode.org/license.txt for BSD license. -USING: accessors kernel locals locals.types prettyprint.backend -prettyprint.custom prettyprint.sections sequences words ; +USING: accessors effects kernel locals locals.definitions +locals.types prettyprint.backend prettyprint.custom +prettyprint.sections see sequences words ; IN: locals.prettyprint : pprint-var ( var -- ) @@ -38,3 +39,9 @@ M: multi-def pprint* dup locals>> [ word? ] all? [ pprint-word "(" text locals>> [ pprint-var ] each ")" text block> ] [ pprint-tuple ] if ; + +M: lambda-method synopsis* + dup dup dup definer. + "method-class" word-prop pprint-word + "method-generic" word-prop pprint-word + method-stack-effect effect>string comment. ; diff --git a/basis/alien/c-types/authors.txt b/core/alien/c-types/authors.txt similarity index 100% rename from basis/alien/c-types/authors.txt rename to core/alien/c-types/authors.txt diff --git a/basis/alien/c-types/c-types-docs.factor b/core/alien/c-types/c-types-docs.factor similarity index 100% rename from basis/alien/c-types/c-types-docs.factor rename to core/alien/c-types/c-types-docs.factor diff --git a/basis/alien/c-types/c-types-tests.factor b/core/alien/c-types/c-types-tests.factor similarity index 100% rename from basis/alien/c-types/c-types-tests.factor rename to core/alien/c-types/c-types-tests.factor diff --git a/basis/alien/c-types/c-types.factor b/core/alien/c-types/c-types.factor similarity index 100% rename from basis/alien/c-types/c-types.factor rename to core/alien/c-types/c-types.factor diff --git a/basis/alien/c-types/summary.txt b/core/alien/c-types/summary.txt similarity index 100% rename from basis/alien/c-types/summary.txt rename to core/alien/c-types/summary.txt diff --git a/basis/alien/libraries/authors.txt b/core/alien/libraries/authors.txt similarity index 100% rename from basis/alien/libraries/authors.txt rename to core/alien/libraries/authors.txt diff --git a/basis/alien/libraries/finder/finder-docs.factor b/core/alien/libraries/finder/finder-docs.factor similarity index 100% rename from basis/alien/libraries/finder/finder-docs.factor rename to core/alien/libraries/finder/finder-docs.factor diff --git a/basis/alien/libraries/finder/finder-tests.factor b/core/alien/libraries/finder/finder-tests.factor similarity index 100% rename from basis/alien/libraries/finder/finder-tests.factor rename to core/alien/libraries/finder/finder-tests.factor diff --git a/basis/alien/libraries/finder/finder.factor b/core/alien/libraries/finder/finder.factor similarity index 100% rename from basis/alien/libraries/finder/finder.factor rename to core/alien/libraries/finder/finder.factor diff --git a/basis/alien/libraries/finder/linux/linux-tests.factor b/core/alien/libraries/finder/linux/linux-tests.factor similarity index 100% rename from basis/alien/libraries/finder/linux/linux-tests.factor rename to core/alien/libraries/finder/linux/linux-tests.factor diff --git a/basis/alien/libraries/finder/linux/linux.factor b/core/alien/libraries/finder/linux/linux.factor similarity index 100% rename from basis/alien/libraries/finder/linux/linux.factor rename to core/alien/libraries/finder/linux/linux.factor diff --git a/basis/alien/libraries/finder/linux/platforms.txt b/core/alien/libraries/finder/linux/platforms.txt similarity index 100% rename from basis/alien/libraries/finder/linux/platforms.txt rename to core/alien/libraries/finder/linux/platforms.txt diff --git a/basis/alien/libraries/finder/macosx/macosx-tests.factor b/core/alien/libraries/finder/macosx/macosx-tests.factor similarity index 100% rename from basis/alien/libraries/finder/macosx/macosx-tests.factor rename to core/alien/libraries/finder/macosx/macosx-tests.factor diff --git a/basis/alien/libraries/finder/macosx/macosx.factor b/core/alien/libraries/finder/macosx/macosx.factor similarity index 100% rename from basis/alien/libraries/finder/macosx/macosx.factor rename to core/alien/libraries/finder/macosx/macosx.factor diff --git a/basis/alien/libraries/finder/macosx/platforms.txt b/core/alien/libraries/finder/macosx/platforms.txt similarity index 100% rename from basis/alien/libraries/finder/macosx/platforms.txt rename to core/alien/libraries/finder/macosx/platforms.txt diff --git a/basis/alien/libraries/finder/windows/platforms.txt b/core/alien/libraries/finder/windows/platforms.txt similarity index 100% rename from basis/alien/libraries/finder/windows/platforms.txt rename to core/alien/libraries/finder/windows/platforms.txt diff --git a/basis/alien/libraries/finder/windows/windows.factor b/core/alien/libraries/finder/windows/windows.factor similarity index 100% rename from basis/alien/libraries/finder/windows/windows.factor rename to core/alien/libraries/finder/windows/windows.factor diff --git a/basis/alien/libraries/libraries-docs.factor b/core/alien/libraries/libraries-docs.factor similarity index 100% rename from basis/alien/libraries/libraries-docs.factor rename to core/alien/libraries/libraries-docs.factor diff --git a/basis/alien/libraries/libraries-tests.factor b/core/alien/libraries/libraries-tests.factor similarity index 100% rename from basis/alien/libraries/libraries-tests.factor rename to core/alien/libraries/libraries-tests.factor diff --git a/basis/alien/libraries/libraries.factor b/core/alien/libraries/libraries.factor similarity index 95% rename from basis/alien/libraries/libraries.factor rename to core/alien/libraries/libraries.factor index 0f95141e2d..77f349ce6d 100755 --- a/basis/alien/libraries/libraries.factor +++ b/core/alien/libraries/libraries.factor @@ -98,7 +98,7 @@ deploy-libraries [ V{ } clone ] initialize HOOK: >deployed-library-path os ( path -- path' ) -{ - { [ os windows? ] [ "alien.libraries.windows" ] } - { [ os unix? ] [ "alien.libraries.unix" ] } -} cond require +! { + ! { [ os windows? ] [ "alien.libraries.windows" ] } + ! { [ os unix? ] [ "alien.libraries.unix" ] } +! } cond require diff --git a/basis/alien/libraries/windows/platforms.txt b/core/alien/libraries/windows/platforms.txt similarity index 100% rename from basis/alien/libraries/windows/platforms.txt rename to core/alien/libraries/windows/platforms.txt diff --git a/basis/alien/libraries/windows/windows.factor b/core/alien/libraries/windows/windows.factor similarity index 100% rename from basis/alien/libraries/windows/windows.factor rename to core/alien/libraries/windows/windows.factor diff --git a/core/bootstrap/stage1.factor b/core/bootstrap/stage1.factor index 91d9dbaa7d..e86ecd755f 100644 --- a/core/bootstrap/stage1.factor +++ b/core/bootstrap/stage1.factor @@ -4,7 +4,7 @@ USING: arrays assocs continuations debugger destructors generic hash-sets hashtables hashtables.identity hashtables.wrapped init io io.files kernel kernel.private make math memory namespaces parser parser.notes prettyprint sequences splitting system -vectors vocabs vocabs.loader words ; +vectors vocabs vocabs.hierarchy vocabs.loader words ; QUALIFIED: bootstrap.image.private IN: bootstrap.stage1 @@ -40,6 +40,15 @@ load-help? off "syntax" require "bootstrap.layouts" require + ! need this + "locals" load + "alien.libraries" require + "alien.c-types" require + "delegate" require + "stack-checker" load + "generalizations" require + "combinators.short-circuit.smart" require + [ f parser-quiet? set-global diff --git a/core/bootstrap/syntax.factor b/core/bootstrap/syntax.factor index 4503584273..f33d517b50 100644 --- a/core/bootstrap/syntax.factor +++ b/core/bootstrap/syntax.factor @@ -90,6 +90,25 @@ IN: bootstrap.syntax "call(" "execute(" "IH{" + "::" + "M::" + "MACRO:" + "MACRO::" + "TYPED:" + "TYPED::" + "MEMO:" + "MEMO::" + "MEMO[" + "IDENTITY-MEMO:" + "IDENTITY-MEMO::" + "PROTOCOL:" + "CONSULT:" + "BROADCAST:" + "SLOT-PROTOCOL:" + "HINTS:" + "'[" + "@" + "_" } [ "syntax" create-word drop ] each "t" "syntax" lookup-word define-symbol diff --git a/basis/combinators/short-circuit/short-circuit-docs.factor b/core/combinators/short-circuit/short-circuit-docs.factor similarity index 100% rename from basis/combinators/short-circuit/short-circuit-docs.factor rename to core/combinators/short-circuit/short-circuit-docs.factor diff --git a/basis/combinators/short-circuit/short-circuit-tests.factor b/core/combinators/short-circuit/short-circuit-tests.factor similarity index 100% rename from basis/combinators/short-circuit/short-circuit-tests.factor rename to core/combinators/short-circuit/short-circuit-tests.factor diff --git a/basis/combinators/short-circuit/short-circuit.factor b/core/combinators/short-circuit/short-circuit.factor similarity index 100% rename from basis/combinators/short-circuit/short-circuit.factor rename to core/combinators/short-circuit/short-circuit.factor diff --git a/basis/combinators/short-circuit/smart/smart-docs.factor b/core/combinators/short-circuit/smart/smart-docs.factor similarity index 100% rename from basis/combinators/short-circuit/smart/smart-docs.factor rename to core/combinators/short-circuit/smart/smart-docs.factor diff --git a/basis/combinators/short-circuit/smart/smart-tests.factor b/core/combinators/short-circuit/smart/smart-tests.factor similarity index 100% rename from basis/combinators/short-circuit/smart/smart-tests.factor rename to core/combinators/short-circuit/smart/smart-tests.factor diff --git a/basis/combinators/short-circuit/smart/smart.factor b/core/combinators/short-circuit/smart/smart.factor similarity index 100% rename from basis/combinators/short-circuit/smart/smart.factor rename to core/combinators/short-circuit/smart/smart.factor diff --git a/basis/combinators/short-circuit/smart/summary.txt b/core/combinators/short-circuit/smart/summary.txt similarity index 100% rename from basis/combinators/short-circuit/smart/summary.txt rename to core/combinators/short-circuit/smart/summary.txt diff --git a/basis/combinators/short-circuit/smart/tags.txt b/core/combinators/short-circuit/smart/tags.txt similarity index 100% rename from basis/combinators/short-circuit/smart/tags.txt rename to core/combinators/short-circuit/smart/tags.txt diff --git a/basis/combinators/short-circuit/summary.txt b/core/combinators/short-circuit/summary.txt similarity index 100% rename from basis/combinators/short-circuit/summary.txt rename to core/combinators/short-circuit/summary.txt diff --git a/basis/combinators/short-circuit/tags.txt b/core/combinators/short-circuit/tags.txt similarity index 100% rename from basis/combinators/short-circuit/tags.txt rename to core/combinators/short-circuit/tags.txt diff --git a/basis/command-line/authors.txt b/core/command-line/authors.txt similarity index 100% rename from basis/command-line/authors.txt rename to core/command-line/authors.txt diff --git a/basis/command-line/command-line-docs.factor b/core/command-line/command-line-docs.factor similarity index 100% rename from basis/command-line/command-line-docs.factor rename to core/command-line/command-line-docs.factor diff --git a/basis/command-line/command-line-tests.factor b/core/command-line/command-line-tests.factor similarity index 100% rename from basis/command-line/command-line-tests.factor rename to core/command-line/command-line-tests.factor diff --git a/basis/command-line/command-line.factor b/core/command-line/command-line.factor similarity index 100% rename from basis/command-line/command-line.factor rename to core/command-line/command-line.factor diff --git a/basis/command-line/debugger/debugger.factor b/core/command-line/debugger/debugger.factor similarity index 100% rename from basis/command-line/debugger/debugger.factor rename to core/command-line/debugger/debugger.factor diff --git a/basis/command-line/startup/authors.txt b/core/command-line/startup/authors.txt similarity index 100% rename from basis/command-line/startup/authors.txt rename to core/command-line/startup/authors.txt diff --git a/basis/command-line/startup/startup.factor b/core/command-line/startup/startup.factor similarity index 98% rename from basis/command-line/startup/startup.factor rename to core/command-line/startup/startup.factor index 5d5fca126c..e8977cd700 100644 --- a/basis/command-line/startup/startup.factor +++ b/core/command-line/startup/startup.factor @@ -1,7 +1,7 @@ ! Copyright (C) 2011 Joe Groff. ! See http://factorcode.org/license.txt for BSD license. USING: command-line eval io io.pathnames kernel namespaces -sequences system vocabs.loader ; +system vocabs.loader ; IN: command-line.startup : cli-usage ( -- ) diff --git a/basis/command-line/summary.txt b/core/command-line/summary.txt similarity index 100% rename from basis/command-line/summary.txt rename to core/command-line/summary.txt diff --git a/basis/compiler/errors/authors.txt b/core/compiler/errors/authors.txt similarity index 100% rename from basis/compiler/errors/authors.txt rename to core/compiler/errors/authors.txt diff --git a/basis/compiler/errors/errors-docs.factor b/core/compiler/errors/errors-docs.factor similarity index 100% rename from basis/compiler/errors/errors-docs.factor rename to core/compiler/errors/errors-docs.factor diff --git a/basis/compiler/errors/errors.factor b/core/compiler/errors/errors.factor similarity index 100% rename from basis/compiler/errors/errors.factor rename to core/compiler/errors/errors.factor diff --git a/basis/compiler/errors/summary.txt b/core/compiler/errors/summary.txt similarity index 100% rename from basis/compiler/errors/summary.txt rename to core/compiler/errors/summary.txt diff --git a/basis/cpu/architecture/architecture-docs.factor b/core/cpu/architecture/architecture-docs.factor similarity index 100% rename from basis/cpu/architecture/architecture-docs.factor rename to core/cpu/architecture/architecture-docs.factor diff --git a/basis/cpu/architecture/architecture-tests.factor b/core/cpu/architecture/architecture-tests.factor similarity index 100% rename from basis/cpu/architecture/architecture-tests.factor rename to core/cpu/architecture/architecture-tests.factor diff --git a/basis/cpu/architecture/architecture.factor b/core/cpu/architecture/architecture.factor similarity index 100% rename from basis/cpu/architecture/architecture.factor rename to core/cpu/architecture/architecture.factor diff --git a/basis/cpu/architecture/authors.txt b/core/cpu/architecture/authors.txt similarity index 100% rename from basis/cpu/architecture/authors.txt rename to core/cpu/architecture/authors.txt diff --git a/basis/cpu/architecture/summary.txt b/core/cpu/architecture/summary.txt similarity index 100% rename from basis/cpu/architecture/summary.txt rename to core/cpu/architecture/summary.txt diff --git a/basis/cpu/architecture/tags.txt b/core/cpu/architecture/tags.txt similarity index 100% rename from basis/cpu/architecture/tags.txt rename to core/cpu/architecture/tags.txt diff --git a/basis/delegate/author.txt b/core/delegate/author.txt similarity index 100% rename from basis/delegate/author.txt rename to core/delegate/author.txt diff --git a/basis/delegate/authors.txt b/core/delegate/authors.txt similarity index 100% rename from basis/delegate/authors.txt rename to core/delegate/authors.txt diff --git a/basis/delegate/delegate-docs.factor b/core/delegate/delegate-docs.factor similarity index 100% rename from basis/delegate/delegate-docs.factor rename to core/delegate/delegate-docs.factor diff --git a/basis/delegate/delegate-tests.factor b/core/delegate/delegate-tests.factor similarity index 100% rename from basis/delegate/delegate-tests.factor rename to core/delegate/delegate-tests.factor diff --git a/basis/delegate/delegate.factor b/core/delegate/delegate.factor similarity index 91% rename from basis/delegate/delegate.factor rename to core/delegate/delegate.factor index 7769729508..d845c3e7b4 100644 --- a/basis/delegate/delegate.factor +++ b/core/delegate/delegate.factor @@ -109,13 +109,13 @@ PRIVATE> : define-consult ( consultation -- ) [ register-consult ] [ consult-methods ] bi ; -SYNTAX: \CONSULT: - scan-word scan-word parse-definition - [ save-location ] [ define-consult ] bi ; +! SYNTAX: \CONSULT: + ! scan-word scan-word parse-definition + ! [ save-location ] [ define-consult ] bi ; -SYNTAX: \BROADCAST: - scan-word scan-word parse-definition - [ save-location ] [ define-consult ] bi ; +! SYNTAX: \BROADCAST: + ! scan-word scan-word parse-definition + ! [ save-location ] [ define-consult ] bi ; M: consultation where loc>> ; @@ -176,8 +176,8 @@ PRIVATE> [ initialize-protocol-props ] 2tri ] 2bi ; -SYNTAX: \PROTOCOL: - scan-new-word parse-definition define-protocol ; +! SYNTAX: \PROTOCOL: + ! scan-new-word parse-definition define-protocol ; PREDICATE: protocol < word protocol-words ; ! Subclass of symbol? @@ -190,7 +190,7 @@ M: protocol definer drop \ PROTOCOL: \ ; ; M: protocol group-words protocol-words ; -SYNTAX: \SLOT-PROTOCOL: - scan-new-word ";" - [ [ reader-word ] [ writer-word ] bi 2array ] - map-tokens concat define-protocol ; +! SYNTAX: \SLOT-PROTOCOL: + ! scan-new-word ";" + ! [ [ reader-word ] [ writer-word ] bi 2array ] + ! map-tokens concat define-protocol ; diff --git a/basis/delegate/protocols/authors.txt b/core/delegate/protocols/authors.txt similarity index 100% rename from basis/delegate/protocols/authors.txt rename to core/delegate/protocols/authors.txt diff --git a/basis/delegate/protocols/protocols.factor b/core/delegate/protocols/protocols.factor similarity index 93% rename from basis/delegate/protocols/protocols.factor rename to core/delegate/protocols/protocols.factor index 3a6501b540..202256a27e 100644 --- a/basis/delegate/protocols/protocols.factor +++ b/core/delegate/protocols/protocols.factor @@ -1,7 +1,6 @@ ! Copyright (C) 2007 Daniel Ehrenberg ! See http://factorcode.org/license.txt for BSD license. -USING: assocs delegate deques io sequences sequences.private -sets ; +USING: assocs deques io sequences sequences.private sets ; IN: delegate.protocols PROTOCOL: sequence-protocol diff --git a/basis/delegate/protocols/summary.txt b/core/delegate/protocols/summary.txt similarity index 100% rename from basis/delegate/protocols/summary.txt rename to core/delegate/protocols/summary.txt diff --git a/basis/delegate/summary.txt b/core/delegate/summary.txt similarity index 100% rename from basis/delegate/summary.txt rename to core/delegate/summary.txt diff --git a/basis/delegate/tags.txt b/core/delegate/tags.txt similarity index 100% rename from basis/delegate/tags.txt rename to core/delegate/tags.txt diff --git a/basis/fry/authors.txt b/core/fry/authors.txt similarity index 100% rename from basis/fry/authors.txt rename to core/fry/authors.txt diff --git a/basis/fry/fry-docs.factor b/core/fry/fry-docs.factor similarity index 100% rename from basis/fry/fry-docs.factor rename to core/fry/fry-docs.factor diff --git a/basis/fry/fry-tests.factor b/core/fry/fry-tests.factor similarity index 100% rename from basis/fry/fry-tests.factor rename to core/fry/fry-tests.factor diff --git a/basis/fry/fry.factor b/core/fry/fry.factor similarity index 96% rename from basis/fry/fry.factor rename to core/fry/fry.factor index 89b49258b7..81eb5f1918 100644 --- a/basis/fry/fry.factor +++ b/core/fry/fry.factor @@ -4,8 +4,8 @@ USING: accessors combinators kernel locals.backend math parser quotations sequences sets splitting words ; IN: fry -: _ ( -- * ) "Only valid inside a fry" throw ; -: @ ( -- * ) "Only valid inside a fry" throw ; +! : _ ( -- * ) "Only valid inside a fry" throw ; +! : @ ( -- * ) "Only valid inside a fry" throw ; ERROR: >r/r>-in-fry-error ; @@ -145,4 +145,4 @@ M: callable fry ( quot -- quot' ) ] bi ] if-empty ; -SYNTAX: \'[ parse-quotation fry append! ; +! SYNTAX: \'[ parse-quotation fry append! ; diff --git a/basis/fry/summary.txt b/core/fry/summary.txt similarity index 100% rename from basis/fry/summary.txt rename to core/fry/summary.txt diff --git a/basis/fry/tags.txt b/core/fry/tags.txt similarity index 100% rename from basis/fry/tags.txt rename to core/fry/tags.txt diff --git a/basis/generalizations/authors.txt b/core/generalizations/authors.txt similarity index 100% rename from basis/generalizations/authors.txt rename to core/generalizations/authors.txt diff --git a/basis/generalizations/generalizations-docs.factor b/core/generalizations/generalizations-docs.factor similarity index 100% rename from basis/generalizations/generalizations-docs.factor rename to core/generalizations/generalizations-docs.factor diff --git a/basis/generalizations/generalizations-tests.factor b/core/generalizations/generalizations-tests.factor similarity index 100% rename from basis/generalizations/generalizations-tests.factor rename to core/generalizations/generalizations-tests.factor diff --git a/basis/generalizations/generalizations.factor b/core/generalizations/generalizations.factor similarity index 100% rename from basis/generalizations/generalizations.factor rename to core/generalizations/generalizations.factor diff --git a/basis/generalizations/summary.txt b/core/generalizations/summary.txt similarity index 100% rename from basis/generalizations/summary.txt rename to core/generalizations/summary.txt diff --git a/basis/grouping/authors.txt b/core/grouping/authors.txt similarity index 100% rename from basis/grouping/authors.txt rename to core/grouping/authors.txt diff --git a/basis/grouping/grouping-docs.factor b/core/grouping/grouping-docs.factor similarity index 100% rename from basis/grouping/grouping-docs.factor rename to core/grouping/grouping-docs.factor diff --git a/basis/grouping/grouping-tests.factor b/core/grouping/grouping-tests.factor similarity index 100% rename from basis/grouping/grouping-tests.factor rename to core/grouping/grouping-tests.factor diff --git a/basis/grouping/grouping.factor b/core/grouping/grouping.factor similarity index 100% rename from basis/grouping/grouping.factor rename to core/grouping/grouping.factor diff --git a/basis/grouping/summary.txt b/core/grouping/summary.txt similarity index 100% rename from basis/grouping/summary.txt rename to core/grouping/summary.txt diff --git a/basis/grouping/tags.txt b/core/grouping/tags.txt similarity index 100% rename from basis/grouping/tags.txt rename to core/grouping/tags.txt diff --git a/basis/hints/authors.txt b/core/hints/authors.txt similarity index 100% rename from basis/hints/authors.txt rename to core/hints/authors.txt diff --git a/basis/hints/hints-docs.factor b/core/hints/hints-docs.factor similarity index 100% rename from basis/hints/hints-docs.factor rename to core/hints/hints-docs.factor diff --git a/basis/hints/hints-tests.factor b/core/hints/hints-tests.factor similarity index 100% rename from basis/hints/hints-tests.factor rename to core/hints/hints-tests.factor diff --git a/basis/hints/hints.factor b/core/hints/hints.factor similarity index 94% rename from basis/hints/hints.factor rename to core/hints/hints.factor index b540d7d07f..7db80ca602 100644 --- a/basis/hints/hints.factor +++ b/core/hints/hints.factor @@ -73,11 +73,11 @@ ERROR: cannot-specialize word specializer ; over inline-recursive? [ cannot-specialize ] when "specializer" set-word-prop ; -SYNTAX: \HINTS: - scan-object dup wrapper? [ wrapped>> ] when - [ changed-definition ] - [ subwords [ changed-definition ] each ] - [ parse-definition { } like set-specializer ] tri ; +! SYNTAX: \HINTS: + ! scan-object dup wrapper? [ wrapped>> ] when + ! [ changed-definition ] + ! [ subwords [ changed-definition ] each ] + ! [ parse-definition { } like set-specializer ] tri ; ! Default specializers { pop* pop push last } [ diff --git a/basis/hints/summary.txt b/core/hints/summary.txt similarity index 100% rename from basis/hints/summary.txt rename to core/hints/summary.txt diff --git a/basis/hints/tags.txt b/core/hints/tags.txt similarity index 100% rename from basis/hints/tags.txt rename to core/hints/tags.txt diff --git a/basis/io/streams/string/authors.txt b/core/io/streams/string/authors.txt similarity index 100% rename from basis/io/streams/string/authors.txt rename to core/io/streams/string/authors.txt diff --git a/basis/io/streams/string/string-docs.factor b/core/io/streams/string/string-docs.factor similarity index 100% rename from basis/io/streams/string/string-docs.factor rename to core/io/streams/string/string-docs.factor diff --git a/basis/io/streams/string/string-tests.factor b/core/io/streams/string/string-tests.factor similarity index 100% rename from basis/io/streams/string/string-tests.factor rename to core/io/streams/string/string-tests.factor diff --git a/basis/io/streams/string/string.factor b/core/io/streams/string/string.factor similarity index 100% rename from basis/io/streams/string/string.factor rename to core/io/streams/string/string.factor diff --git a/basis/io/streams/string/summary.txt b/core/io/streams/string/summary.txt similarity index 100% rename from basis/io/streams/string/summary.txt rename to core/io/streams/string/summary.txt diff --git a/basis/locals/authors.txt b/core/locals/authors.txt similarity index 100% rename from basis/locals/authors.txt rename to core/locals/authors.txt diff --git a/basis/locals/backend/backend-tests.factor b/core/locals/backend/backend-tests.factor similarity index 100% rename from basis/locals/backend/backend-tests.factor rename to core/locals/backend/backend-tests.factor diff --git a/basis/locals/backend/backend.factor b/core/locals/backend/backend.factor similarity index 100% rename from basis/locals/backend/backend.factor rename to core/locals/backend/backend.factor diff --git a/basis/locals/definitions/definitions.factor b/core/locals/definitions/definitions.factor similarity index 66% rename from basis/locals/definitions/definitions.factor rename to core/locals/definitions/definitions.factor index 6fc715ba8d..681b39d5e6 100644 --- a/basis/locals/definitions/definitions.factor +++ b/core/locals/definitions/definitions.factor @@ -1,11 +1,30 @@ ! Copyright (C) 2007, 2008 Slava Pestov, Eduardo Cavazos. ! See http://factorcode.org/license.txt for BSD license. -USING: accessors definitions effects generic kernel locals -macros memoize prettyprint prettyprint.backend see words ; +USING: accessors definitions effects generic kernel locals.types +macros make memoize quotations sequences words ; IN: locals.definitions PREDICATE: lambda-word < word "lambda" word-prop >boolean ; +! Lambdas/locals need to expose their uninterned subwords in order +! to make a boot image. +GENERIC: lambda-subwords ( obj -- ) + +M: object lambda-subwords drop ; + +M: lambda lambda-subwords [ vars>> % ] [ body>> [ lambda-subwords ] each ] bi ; + +M: def lambda-subwords local>> , ; + +M: callable lambda-subwords [ lambda-subwords ] each ; +M: sequence lambda-subwords [ lambda-subwords ] each ; + +M: lambda-word subwords + [ + "lambda" word-prop + [ vars>> % ] [ body>> [ lambda-subwords ] each ] bi + ] { } make ; + M: lambda-word definer drop \ :: \ ; ; M: lambda-word definition @@ -49,9 +68,3 @@ M: lambda-memoized reset-word swap "method-generic" word-prop stack-effect dup [ out>> ] when ; - -M: lambda-method synopsis* - dup dup dup definer. - "method-class" word-prop pprint-word - "method-generic" word-prop pprint-word - method-stack-effect effect>string comment. ; diff --git a/basis/locals/definitions/summary.txt b/core/locals/definitions/summary.txt similarity index 100% rename from basis/locals/definitions/summary.txt rename to core/locals/definitions/summary.txt diff --git a/basis/locals/errors/errors.factor b/core/locals/errors/errors.factor similarity index 100% rename from basis/locals/errors/errors.factor rename to core/locals/errors/errors.factor diff --git a/basis/locals/errors/summary.txt b/core/locals/errors/summary.txt similarity index 100% rename from basis/locals/errors/summary.txt rename to core/locals/errors/summary.txt diff --git a/basis/locals/fry/fry.factor b/core/locals/fry/fry.factor similarity index 100% rename from basis/locals/fry/fry.factor rename to core/locals/fry/fry.factor diff --git a/basis/locals/fry/summary.txt b/core/locals/fry/summary.txt similarity index 100% rename from basis/locals/fry/summary.txt rename to core/locals/fry/summary.txt diff --git a/basis/locals/locals-docs.factor b/core/locals/locals-docs.factor similarity index 100% rename from basis/locals/locals-docs.factor rename to core/locals/locals-docs.factor diff --git a/basis/locals/locals-tests.factor b/core/locals/locals-tests.factor similarity index 100% rename from basis/locals/locals-tests.factor rename to core/locals/locals-tests.factor diff --git a/core/locals/locals.factor b/core/locals/locals.factor new file mode 100644 index 0000000000..4f9b0fc3c8 --- /dev/null +++ b/core/locals/locals.factor @@ -0,0 +1,29 @@ +! Copyright (C) 2007, 2009 Slava Pestov, Eduardo Cavazos. +! See http://factorcode.org/license.txt for BSD license. +USING: fry kernel lexer locals.errors locals.parser locals.types +macros memoize namespaces sequences vocabs vocabs.loader words ; +IN: locals + +! SYNTAX: :> + ! in-lambda? get [ :>-outside-lambda-error ] unless + ! scan-token parse-def suffix! ; + +! SYNTAX: \|[ parse-lambda append! ; + +! SYNTAX: \let[ parse-let append! ; +! SYNTAX: \'let[ H{ } clone (parse-lambda) [ fry call ?rewrite-closures call ] curry append! ; + +! SYNTAX: \:: (::) define-declared ; + +! SYNTAX: \M:: (M::) define ; + +! SYNTAX: \MACRO:: (::) define-macro ; + +! SYNTAX: \MEMO:: (::) define-memoized ; + +! SYNTAX: \IDENTITY-MEMO:: (::) define-identity-memoized ; + +! { "locals.macros" "locals.fry" } [ require ] each + +! { "locals" "prettyprint" } "locals.definitions" require-when +! { "locals" "prettyprint" } "locals.prettyprint" require-when diff --git a/basis/locals/macros/macros.factor b/core/locals/macros/macros.factor similarity index 100% rename from basis/locals/macros/macros.factor rename to core/locals/macros/macros.factor diff --git a/basis/locals/macros/summary.txt b/core/locals/macros/summary.txt similarity index 100% rename from basis/locals/macros/summary.txt rename to core/locals/macros/summary.txt diff --git a/basis/locals/parser/parser-docs.factor b/core/locals/parser/parser-docs.factor similarity index 100% rename from basis/locals/parser/parser-docs.factor rename to core/locals/parser/parser-docs.factor diff --git a/basis/locals/parser/parser-tests.factor b/core/locals/parser/parser-tests.factor similarity index 100% rename from basis/locals/parser/parser-tests.factor rename to core/locals/parser/parser-tests.factor diff --git a/basis/locals/parser/parser.factor b/core/locals/parser/parser.factor similarity index 100% rename from basis/locals/parser/parser.factor rename to core/locals/parser/parser.factor diff --git a/basis/locals/parser/summary.txt b/core/locals/parser/summary.txt similarity index 100% rename from basis/locals/parser/summary.txt rename to core/locals/parser/summary.txt diff --git a/basis/locals/rewrite/closures/closures.factor b/core/locals/rewrite/closures/closures.factor similarity index 100% rename from basis/locals/rewrite/closures/closures.factor rename to core/locals/rewrite/closures/closures.factor diff --git a/basis/locals/rewrite/closures/summary.txt b/core/locals/rewrite/closures/summary.txt similarity index 100% rename from basis/locals/rewrite/closures/summary.txt rename to core/locals/rewrite/closures/summary.txt diff --git a/basis/locals/rewrite/point-free/point-free.factor b/core/locals/rewrite/point-free/point-free.factor similarity index 100% rename from basis/locals/rewrite/point-free/point-free.factor rename to core/locals/rewrite/point-free/point-free.factor diff --git a/basis/locals/rewrite/point-free/summary.txt b/core/locals/rewrite/point-free/summary.txt similarity index 100% rename from basis/locals/rewrite/point-free/summary.txt rename to core/locals/rewrite/point-free/summary.txt diff --git a/basis/locals/rewrite/sugar/sugar.factor b/core/locals/rewrite/sugar/sugar.factor similarity index 100% rename from basis/locals/rewrite/sugar/sugar.factor rename to core/locals/rewrite/sugar/sugar.factor diff --git a/basis/locals/rewrite/sugar/summary.txt b/core/locals/rewrite/sugar/summary.txt similarity index 100% rename from basis/locals/rewrite/sugar/summary.txt rename to core/locals/rewrite/sugar/summary.txt diff --git a/basis/locals/summary.txt b/core/locals/summary.txt similarity index 100% rename from basis/locals/summary.txt rename to core/locals/summary.txt diff --git a/basis/locals/tags.txt b/core/locals/tags.txt similarity index 100% rename from basis/locals/tags.txt rename to core/locals/tags.txt diff --git a/basis/locals/types/summary.txt b/core/locals/types/summary.txt similarity index 100% rename from basis/locals/types/summary.txt rename to core/locals/types/summary.txt diff --git a/basis/locals/types/types-tests.factor b/core/locals/types/types-tests.factor similarity index 100% rename from basis/locals/types/types-tests.factor rename to core/locals/types/types-tests.factor diff --git a/basis/locals/types/types.factor b/core/locals/types/types.factor similarity index 100% rename from basis/locals/types/types.factor rename to core/locals/types/types.factor diff --git a/basis/macros/authors.txt b/core/macros/authors.txt similarity index 100% rename from basis/macros/authors.txt rename to core/macros/authors.txt diff --git a/basis/macros/expander/expander-tests.factor b/core/macros/expander/expander-tests.factor similarity index 100% rename from basis/macros/expander/expander-tests.factor rename to core/macros/expander/expander-tests.factor diff --git a/basis/macros/expander/expander.factor b/core/macros/expander/expander.factor similarity index 100% rename from basis/macros/expander/expander.factor rename to core/macros/expander/expander.factor diff --git a/basis/macros/expander/summary.txt b/core/macros/expander/summary.txt similarity index 100% rename from basis/macros/expander/summary.txt rename to core/macros/expander/summary.txt diff --git a/basis/macros/macros-docs.factor b/core/macros/macros-docs.factor similarity index 100% rename from basis/macros/macros-docs.factor rename to core/macros/macros-docs.factor diff --git a/basis/macros/macros-tests.factor b/core/macros/macros-tests.factor similarity index 100% rename from basis/macros/macros-tests.factor rename to core/macros/macros-tests.factor diff --git a/basis/macros/macros.factor b/core/macros/macros.factor similarity index 96% rename from basis/macros/macros.factor rename to core/macros/macros.factor index 138ca4c8c7..dc3575dc7d 100644 --- a/basis/macros/macros.factor +++ b/core/macros/macros.factor @@ -27,7 +27,7 @@ PRIVATE> [ 2drop changed-effect ] } 3cleave ; -SYNTAX: \MACRO: (:) define-macro ; +! SYNTAX: \MACRO: (:) define-macro ; PREDICATE: macro < word "macro" word-prop >boolean ; diff --git a/basis/macros/summary.txt b/core/macros/summary.txt similarity index 100% rename from basis/macros/summary.txt rename to core/macros/summary.txt diff --git a/basis/macros/tags.txt b/core/macros/tags.txt similarity index 100% rename from basis/macros/tags.txt rename to core/macros/tags.txt diff --git a/basis/math/ranges/authors.txt b/core/math/ranges/authors.txt similarity index 100% rename from basis/math/ranges/authors.txt rename to core/math/ranges/authors.txt diff --git a/basis/math/ranges/ranges-docs.factor b/core/math/ranges/ranges-docs.factor similarity index 100% rename from basis/math/ranges/ranges-docs.factor rename to core/math/ranges/ranges-docs.factor diff --git a/basis/math/ranges/ranges-tests.factor b/core/math/ranges/ranges-tests.factor similarity index 100% rename from basis/math/ranges/ranges-tests.factor rename to core/math/ranges/ranges-tests.factor diff --git a/basis/math/ranges/ranges.factor b/core/math/ranges/ranges.factor similarity index 100% rename from basis/math/ranges/ranges.factor rename to core/math/ranges/ranges.factor diff --git a/basis/math/ranges/summary.txt b/core/math/ranges/summary.txt similarity index 100% rename from basis/math/ranges/summary.txt rename to core/math/ranges/summary.txt diff --git a/basis/memoize/authors.txt b/core/memoize/authors.txt similarity index 100% rename from basis/memoize/authors.txt rename to core/memoize/authors.txt diff --git a/basis/memoize/memoize-docs.factor b/core/memoize/memoize-docs.factor similarity index 100% rename from basis/memoize/memoize-docs.factor rename to core/memoize/memoize-docs.factor diff --git a/basis/memoize/memoize-tests.factor b/core/memoize/memoize-tests.factor similarity index 100% rename from basis/memoize/memoize-tests.factor rename to core/memoize/memoize-tests.factor diff --git a/basis/memoize/memoize.factor b/core/memoize/memoize.factor similarity index 96% rename from basis/memoize/memoize.factor rename to core/memoize/memoize.factor index 76d2641ca2..cdf0799cee 100644 --- a/basis/memoize/memoize.factor +++ b/core/memoize/memoize.factor @@ -69,9 +69,9 @@ PRIVATE> dup in>> length zero? [ f 1array ] [ IH{ } clone ] if (define-memoized) ; -SYNTAX: \MEMO: (:) define-memoized ; +! SYNTAX: \MEMO: (:) define-memoized ; -SYNTAX: \IDENTITY-MEMO: (:) define-identity-memoized ; +! SYNTAX: \IDENTITY-MEMO: (:) define-identity-memoized ; PREDICATE: memoized < word "memoize" word-prop >boolean ; diff --git a/basis/memoize/summary.txt b/core/memoize/summary.txt similarity index 100% rename from basis/memoize/summary.txt rename to core/memoize/summary.txt diff --git a/basis/memoize/syntax/syntax-docs.factor b/core/memoize/syntax/syntax-docs.factor similarity index 100% rename from basis/memoize/syntax/syntax-docs.factor rename to core/memoize/syntax/syntax-docs.factor diff --git a/basis/memoize/syntax/syntax-tests.factor b/core/memoize/syntax/syntax-tests.factor similarity index 100% rename from basis/memoize/syntax/syntax-tests.factor rename to core/memoize/syntax/syntax-tests.factor diff --git a/basis/memoize/syntax/syntax.factor b/core/memoize/syntax/syntax.factor similarity index 53% rename from basis/memoize/syntax/syntax.factor rename to core/memoize/syntax/syntax.factor index 0982659881..0fa5dec764 100644 --- a/basis/memoize/syntax/syntax.factor +++ b/core/memoize/syntax/syntax.factor @@ -2,4 +2,4 @@ USING: kernel memoize parser sequences stack-checker ; IN: memoize.syntax -SYNTAX: \MEMO[ parse-quotation dup infer memoize-quot suffix! ; +! SYNTAX: \MEMO[ parse-quotation dup infer memoize-quot suffix! ; diff --git a/basis/memoize/tags.txt b/core/memoize/tags.txt similarity index 100% rename from basis/memoize/tags.txt rename to core/memoize/tags.txt diff --git a/basis/present/authors.txt b/core/present/authors.txt similarity index 100% rename from basis/present/authors.txt rename to core/present/authors.txt diff --git a/basis/present/present-docs.factor b/core/present/present-docs.factor similarity index 100% rename from basis/present/present-docs.factor rename to core/present/present-docs.factor diff --git a/basis/present/present-tests.factor b/core/present/present-tests.factor similarity index 100% rename from basis/present/present-tests.factor rename to core/present/present-tests.factor diff --git a/basis/present/present.factor b/core/present/present.factor similarity index 100% rename from basis/present/present.factor rename to core/present/present.factor diff --git a/basis/present/summary.txt b/core/present/summary.txt similarity index 100% rename from basis/present/summary.txt rename to core/present/summary.txt diff --git a/basis/sequences/generalizations/generalizations-docs.factor b/core/sequences/generalizations/generalizations-docs.factor similarity index 100% rename from basis/sequences/generalizations/generalizations-docs.factor rename to core/sequences/generalizations/generalizations-docs.factor diff --git a/basis/sequences/generalizations/generalizations-tests.factor b/core/sequences/generalizations/generalizations-tests.factor similarity index 100% rename from basis/sequences/generalizations/generalizations-tests.factor rename to core/sequences/generalizations/generalizations-tests.factor diff --git a/basis/sequences/generalizations/generalizations.factor b/core/sequences/generalizations/generalizations.factor similarity index 100% rename from basis/sequences/generalizations/generalizations.factor rename to core/sequences/generalizations/generalizations.factor diff --git a/basis/stack-checker/alien/alien-docs.factor b/core/stack-checker/alien/alien-docs.factor similarity index 100% rename from basis/stack-checker/alien/alien-docs.factor rename to core/stack-checker/alien/alien-docs.factor diff --git a/basis/stack-checker/alien/alien-tests.factor b/core/stack-checker/alien/alien-tests.factor similarity index 100% rename from basis/stack-checker/alien/alien-tests.factor rename to core/stack-checker/alien/alien-tests.factor diff --git a/basis/stack-checker/alien/alien.factor b/core/stack-checker/alien/alien.factor similarity index 100% rename from basis/stack-checker/alien/alien.factor rename to core/stack-checker/alien/alien.factor diff --git a/basis/stack-checker/alien/summary.txt b/core/stack-checker/alien/summary.txt similarity index 100% rename from basis/stack-checker/alien/summary.txt rename to core/stack-checker/alien/summary.txt diff --git a/basis/stack-checker/authors.txt b/core/stack-checker/authors.txt similarity index 100% rename from basis/stack-checker/authors.txt rename to core/stack-checker/authors.txt diff --git a/basis/stack-checker/backend/authors.txt b/core/stack-checker/backend/authors.txt similarity index 100% rename from basis/stack-checker/backend/authors.txt rename to core/stack-checker/backend/authors.txt diff --git a/basis/stack-checker/backend/backend-docs.factor b/core/stack-checker/backend/backend-docs.factor similarity index 100% rename from basis/stack-checker/backend/backend-docs.factor rename to core/stack-checker/backend/backend-docs.factor diff --git a/basis/stack-checker/backend/backend-tests.factor b/core/stack-checker/backend/backend-tests.factor similarity index 100% rename from basis/stack-checker/backend/backend-tests.factor rename to core/stack-checker/backend/backend-tests.factor diff --git a/basis/stack-checker/backend/backend.factor b/core/stack-checker/backend/backend.factor similarity index 100% rename from basis/stack-checker/backend/backend.factor rename to core/stack-checker/backend/backend.factor diff --git a/basis/stack-checker/backend/summary.txt b/core/stack-checker/backend/summary.txt similarity index 100% rename from basis/stack-checker/backend/summary.txt rename to core/stack-checker/backend/summary.txt diff --git a/basis/stack-checker/branches/authors.txt b/core/stack-checker/branches/authors.txt similarity index 100% rename from basis/stack-checker/branches/authors.txt rename to core/stack-checker/branches/authors.txt diff --git a/basis/stack-checker/branches/branches-docs.factor b/core/stack-checker/branches/branches-docs.factor similarity index 100% rename from basis/stack-checker/branches/branches-docs.factor rename to core/stack-checker/branches/branches-docs.factor diff --git a/basis/stack-checker/branches/branches-tests.factor b/core/stack-checker/branches/branches-tests.factor similarity index 100% rename from basis/stack-checker/branches/branches-tests.factor rename to core/stack-checker/branches/branches-tests.factor diff --git a/basis/stack-checker/branches/branches.factor b/core/stack-checker/branches/branches.factor similarity index 100% rename from basis/stack-checker/branches/branches.factor rename to core/stack-checker/branches/branches.factor diff --git a/basis/stack-checker/branches/summary.txt b/core/stack-checker/branches/summary.txt similarity index 100% rename from basis/stack-checker/branches/summary.txt rename to core/stack-checker/branches/summary.txt diff --git a/basis/stack-checker/dependencies/authors.txt b/core/stack-checker/dependencies/authors.txt similarity index 100% rename from basis/stack-checker/dependencies/authors.txt rename to core/stack-checker/dependencies/authors.txt diff --git a/basis/stack-checker/dependencies/dependencies-docs.factor b/core/stack-checker/dependencies/dependencies-docs.factor similarity index 100% rename from basis/stack-checker/dependencies/dependencies-docs.factor rename to core/stack-checker/dependencies/dependencies-docs.factor diff --git a/basis/stack-checker/dependencies/dependencies.factor b/core/stack-checker/dependencies/dependencies.factor similarity index 100% rename from basis/stack-checker/dependencies/dependencies.factor rename to core/stack-checker/dependencies/dependencies.factor diff --git a/basis/stack-checker/errors/authors.txt b/core/stack-checker/errors/authors.txt similarity index 100% rename from basis/stack-checker/errors/authors.txt rename to core/stack-checker/errors/authors.txt diff --git a/basis/stack-checker/errors/errors-docs.factor b/core/stack-checker/errors/errors-docs.factor similarity index 100% rename from basis/stack-checker/errors/errors-docs.factor rename to core/stack-checker/errors/errors-docs.factor diff --git a/basis/stack-checker/errors/errors.factor b/core/stack-checker/errors/errors.factor similarity index 100% rename from basis/stack-checker/errors/errors.factor rename to core/stack-checker/errors/errors.factor diff --git a/basis/stack-checker/errors/summary.txt b/core/stack-checker/errors/summary.txt similarity index 100% rename from basis/stack-checker/errors/summary.txt rename to core/stack-checker/errors/summary.txt diff --git a/basis/stack-checker/inlining/authors.txt b/core/stack-checker/inlining/authors.txt similarity index 100% rename from basis/stack-checker/inlining/authors.txt rename to core/stack-checker/inlining/authors.txt diff --git a/basis/stack-checker/inlining/inlining-docs.factor b/core/stack-checker/inlining/inlining-docs.factor similarity index 100% rename from basis/stack-checker/inlining/inlining-docs.factor rename to core/stack-checker/inlining/inlining-docs.factor diff --git a/basis/stack-checker/inlining/inlining.factor b/core/stack-checker/inlining/inlining.factor similarity index 100% rename from basis/stack-checker/inlining/inlining.factor rename to core/stack-checker/inlining/inlining.factor diff --git a/basis/stack-checker/inlining/summary.txt b/core/stack-checker/inlining/summary.txt similarity index 100% rename from basis/stack-checker/inlining/summary.txt rename to core/stack-checker/inlining/summary.txt diff --git a/basis/stack-checker/known-words/authors.txt b/core/stack-checker/known-words/authors.txt similarity index 100% rename from basis/stack-checker/known-words/authors.txt rename to core/stack-checker/known-words/authors.txt diff --git a/basis/stack-checker/known-words/known-words-docs.factor b/core/stack-checker/known-words/known-words-docs.factor similarity index 100% rename from basis/stack-checker/known-words/known-words-docs.factor rename to core/stack-checker/known-words/known-words-docs.factor diff --git a/basis/stack-checker/known-words/known-words-tests.factor b/core/stack-checker/known-words/known-words-tests.factor similarity index 100% rename from basis/stack-checker/known-words/known-words-tests.factor rename to core/stack-checker/known-words/known-words-tests.factor diff --git a/basis/stack-checker/known-words/known-words.factor b/core/stack-checker/known-words/known-words.factor similarity index 100% rename from basis/stack-checker/known-words/known-words.factor rename to core/stack-checker/known-words/known-words.factor diff --git a/basis/stack-checker/known-words/summary.txt b/core/stack-checker/known-words/summary.txt similarity index 100% rename from basis/stack-checker/known-words/summary.txt rename to core/stack-checker/known-words/summary.txt diff --git a/basis/stack-checker/recursive-state/recursive-state-docs.factor b/core/stack-checker/recursive-state/recursive-state-docs.factor similarity index 100% rename from basis/stack-checker/recursive-state/recursive-state-docs.factor rename to core/stack-checker/recursive-state/recursive-state-docs.factor diff --git a/basis/stack-checker/recursive-state/recursive-state.factor b/core/stack-checker/recursive-state/recursive-state.factor similarity index 100% rename from basis/stack-checker/recursive-state/recursive-state.factor rename to core/stack-checker/recursive-state/recursive-state.factor diff --git a/basis/stack-checker/recursive-state/summary.txt b/core/stack-checker/recursive-state/summary.txt similarity index 100% rename from basis/stack-checker/recursive-state/summary.txt rename to core/stack-checker/recursive-state/summary.txt diff --git a/basis/stack-checker/recursive-state/tree/summary.txt b/core/stack-checker/recursive-state/tree/summary.txt similarity index 100% rename from basis/stack-checker/recursive-state/tree/summary.txt rename to core/stack-checker/recursive-state/tree/summary.txt diff --git a/basis/stack-checker/recursive-state/tree/tree.factor b/core/stack-checker/recursive-state/tree/tree.factor similarity index 100% rename from basis/stack-checker/recursive-state/tree/tree.factor rename to core/stack-checker/recursive-state/tree/tree.factor diff --git a/basis/stack-checker/row-polymorphism/row-polymorphism.factor b/core/stack-checker/row-polymorphism/row-polymorphism.factor similarity index 100% rename from basis/stack-checker/row-polymorphism/row-polymorphism.factor rename to core/stack-checker/row-polymorphism/row-polymorphism.factor diff --git a/basis/stack-checker/stack-checker-docs.factor b/core/stack-checker/stack-checker-docs.factor similarity index 100% rename from basis/stack-checker/stack-checker-docs.factor rename to core/stack-checker/stack-checker-docs.factor diff --git a/basis/stack-checker/stack-checker-tests.factor b/core/stack-checker/stack-checker-tests.factor similarity index 100% rename from basis/stack-checker/stack-checker-tests.factor rename to core/stack-checker/stack-checker-tests.factor diff --git a/basis/stack-checker/stack-checker.factor b/core/stack-checker/stack-checker.factor similarity index 100% rename from basis/stack-checker/stack-checker.factor rename to core/stack-checker/stack-checker.factor diff --git a/basis/stack-checker/state/authors.txt b/core/stack-checker/state/authors.txt similarity index 100% rename from basis/stack-checker/state/authors.txt rename to core/stack-checker/state/authors.txt diff --git a/basis/stack-checker/state/state-docs.factor b/core/stack-checker/state/state-docs.factor similarity index 100% rename from basis/stack-checker/state/state-docs.factor rename to core/stack-checker/state/state-docs.factor diff --git a/basis/stack-checker/state/state-tests.factor b/core/stack-checker/state/state-tests.factor similarity index 100% rename from basis/stack-checker/state/state-tests.factor rename to core/stack-checker/state/state-tests.factor diff --git a/basis/stack-checker/state/state.factor b/core/stack-checker/state/state.factor similarity index 100% rename from basis/stack-checker/state/state.factor rename to core/stack-checker/state/state.factor diff --git a/basis/stack-checker/state/summary.txt b/core/stack-checker/state/summary.txt similarity index 100% rename from basis/stack-checker/state/summary.txt rename to core/stack-checker/state/summary.txt diff --git a/basis/stack-checker/summary.txt b/core/stack-checker/summary.txt similarity index 100% rename from basis/stack-checker/summary.txt rename to core/stack-checker/summary.txt diff --git a/basis/stack-checker/tags.txt b/core/stack-checker/tags.txt similarity index 100% rename from basis/stack-checker/tags.txt rename to core/stack-checker/tags.txt diff --git a/basis/stack-checker/transforms/authors.txt b/core/stack-checker/transforms/authors.txt similarity index 100% rename from basis/stack-checker/transforms/authors.txt rename to core/stack-checker/transforms/authors.txt diff --git a/basis/stack-checker/transforms/summary.txt b/core/stack-checker/transforms/summary.txt similarity index 100% rename from basis/stack-checker/transforms/summary.txt rename to core/stack-checker/transforms/summary.txt diff --git a/basis/stack-checker/transforms/transforms-docs.factor b/core/stack-checker/transforms/transforms-docs.factor similarity index 100% rename from basis/stack-checker/transforms/transforms-docs.factor rename to core/stack-checker/transforms/transforms-docs.factor diff --git a/basis/stack-checker/transforms/transforms-tests.factor b/core/stack-checker/transforms/transforms-tests.factor similarity index 100% rename from basis/stack-checker/transforms/transforms-tests.factor rename to core/stack-checker/transforms/transforms-tests.factor diff --git a/basis/stack-checker/transforms/transforms.factor b/core/stack-checker/transforms/transforms.factor similarity index 100% rename from basis/stack-checker/transforms/transforms.factor rename to core/stack-checker/transforms/transforms.factor diff --git a/basis/stack-checker/values/summary.txt b/core/stack-checker/values/summary.txt similarity index 100% rename from basis/stack-checker/values/summary.txt rename to core/stack-checker/values/summary.txt diff --git a/basis/stack-checker/values/values-docs.factor b/core/stack-checker/values/values-docs.factor similarity index 100% rename from basis/stack-checker/values/values-docs.factor rename to core/stack-checker/values/values-docs.factor diff --git a/basis/stack-checker/values/values-tests.factor b/core/stack-checker/values/values-tests.factor similarity index 100% rename from basis/stack-checker/values/values-tests.factor rename to core/stack-checker/values/values-tests.factor diff --git a/basis/stack-checker/values/values.factor b/core/stack-checker/values/values.factor similarity index 100% rename from basis/stack-checker/values/values.factor rename to core/stack-checker/values/values.factor diff --git a/basis/stack-checker/visitor/authors.txt b/core/stack-checker/visitor/authors.txt similarity index 100% rename from basis/stack-checker/visitor/authors.txt rename to core/stack-checker/visitor/authors.txt diff --git a/basis/stack-checker/visitor/dummy/dummy.factor b/core/stack-checker/visitor/dummy/dummy.factor similarity index 100% rename from basis/stack-checker/visitor/dummy/dummy.factor rename to core/stack-checker/visitor/dummy/dummy.factor diff --git a/basis/stack-checker/visitor/dummy/summary.txt b/core/stack-checker/visitor/dummy/summary.txt similarity index 100% rename from basis/stack-checker/visitor/dummy/summary.txt rename to core/stack-checker/visitor/dummy/summary.txt diff --git a/basis/stack-checker/visitor/summary.txt b/core/stack-checker/visitor/summary.txt similarity index 100% rename from basis/stack-checker/visitor/summary.txt rename to core/stack-checker/visitor/summary.txt diff --git a/basis/stack-checker/visitor/visitor-docs.factor b/core/stack-checker/visitor/visitor-docs.factor similarity index 100% rename from basis/stack-checker/visitor/visitor-docs.factor rename to core/stack-checker/visitor/visitor-docs.factor diff --git a/basis/stack-checker/visitor/visitor.factor b/core/stack-checker/visitor/visitor.factor similarity index 100% rename from basis/stack-checker/visitor/visitor.factor rename to core/stack-checker/visitor/visitor.factor diff --git a/basis/summary/authors.txt b/core/summary/authors.txt similarity index 100% rename from basis/summary/authors.txt rename to core/summary/authors.txt diff --git a/basis/summary/summary-docs.factor b/core/summary/summary-docs.factor similarity index 100% rename from basis/summary/summary-docs.factor rename to core/summary/summary-docs.factor diff --git a/basis/summary/summary-tests.factor b/core/summary/summary-tests.factor similarity index 100% rename from basis/summary/summary-tests.factor rename to core/summary/summary-tests.factor diff --git a/basis/summary/summary.factor b/core/summary/summary.factor similarity index 100% rename from basis/summary/summary.factor rename to core/summary/summary.factor diff --git a/basis/summary/summary.txt b/core/summary/summary.txt similarity index 100% rename from basis/summary/summary.txt rename to core/summary/summary.txt diff --git a/core/syntax/syntax.factor b/core/syntax/syntax.factor index 1346cbda35..9701e0fbca 100644 --- a/core/syntax/syntax.factor +++ b/core/syntax/syntax.factor @@ -5,13 +5,13 @@ classes.algebra.private classes.builtin classes.error classes.intersection classes.maybe classes.mixin classes.parser classes.predicate classes.singleton classes.tuple classes.tuple.parser classes.union combinators compiler.units -definitions effects effects.parser generic generic.hook -generic.math generic.parser generic.standard hash-sets -hashtables hashtables.identity io.pathnames kernel lexer math +definitions delegate delegate.private effects effects.parser fry +generic generic.hook generic.math generic.parser +generic.standard hash-sets hashtables hashtables.identity hints +io.pathnames kernel lexer locals.parser macros math memoize namespaces parser quotations sbufs sequences slots source-files -splitting strings strings.parser strings.parser.private vectors -vocabs vocabs.parser words words.alias words.constant -words.symbol ; +splitting stack-checker strings strings.parser typed vectors +vocabs.parser words words.alias words.constant words.symbol ; IN: bootstrap.syntax ! These words are defined as a top-level form, instead of with @@ -37,6 +37,18 @@ IN: bootstrap.syntax ] dip define-syntax ; +: define-dummy-fry ( name -- word ) + "syntax" lookup-word + [ "Only valid inside a fry" throw ] ( -- * ) + [ define-declared ] 3keep 2drop ; + +: define-fry-specifier ( word words -- ) + [ \ word ] dip [ member-eq? ] curry define-predicate-class ; + +: define-fry-specifiers ( names -- ) + [ define-dummy-fry ] map + dup [ define-fry-specifier ] curry each ; + [ { "]" "}" ";" ">>" } [ define-delimiter ] each @@ -292,4 +304,47 @@ IN: bootstrap.syntax "execute(" [ \ execute-effect parse-call-paren ] define-core-syntax "IH{" [ \ } [ >identity-hashtable ] parse-literal ] define-core-syntax + + "::" [ (::) define-declared ] define-core-syntax + "M::" [ (M::) define ] define-core-syntax + "MACRO:" [ (:) define-macro ] define-core-syntax + "MACRO::" [ (::) define-macro ] define-core-syntax + "TYPED:" [ (:) define-typed ] define-core-syntax + "TYPED::" [ (::) define-typed ] define-core-syntax + "MEMO:" [ (:) define-memoized ] define-core-syntax + "MEMO::" [ (::) define-memoized ] define-core-syntax + "MEMO[" [ parse-quotation dup infer memoize-quot suffix! ] define-core-syntax + "IDENTITY-MEMO:" [ (:) define-identity-memoized ] define-core-syntax + "IDENTITY-MEMO::" [ (::) define-identity-memoized ] define-core-syntax + + "'[" [ parse-quotation fry append! ] define-core-syntax + + "PROTOCOL:" [ + scan-new-word parse-definition define-protocol + ] define-core-syntax + + "CONSULT:" [ + scan-word scan-word parse-definition + [ save-location ] [ define-consult ] bi + ] define-core-syntax + + "BROADCAST:" [ + scan-word scan-word parse-definition + [ save-location ] [ define-consult ] bi + ] define-core-syntax + + "SLOT-PROTOCOL:" [ + scan-new-word ";" + [ [ reader-word ] [ writer-word ] bi 2array ] + map-tokens concat define-protocol + ] define-core-syntax + + "HINTS:" [ + scan-object dup wrapper? [ wrapped>> ] when + [ changed-definition ] + [ subwords [ changed-definition ] each ] + [ parse-definition { } like set-specializer ] tri + ] define-core-syntax + + { "_" "@" } define-fry-specifiers ] with-compilation-unit diff --git a/basis/typed/authors.txt b/core/typed/authors.txt similarity index 100% rename from basis/typed/authors.txt rename to core/typed/authors.txt diff --git a/basis/typed/namespaces/namespaces-tests.factor b/core/typed/namespaces/namespaces-tests.factor similarity index 100% rename from basis/typed/namespaces/namespaces-tests.factor rename to core/typed/namespaces/namespaces-tests.factor diff --git a/basis/typed/namespaces/namespaces.factor b/core/typed/namespaces/namespaces.factor similarity index 100% rename from basis/typed/namespaces/namespaces.factor rename to core/typed/namespaces/namespaces.factor diff --git a/basis/typed/summary.txt b/core/typed/summary.txt similarity index 100% rename from basis/typed/summary.txt rename to core/typed/summary.txt diff --git a/basis/typed/typed-docs.factor b/core/typed/typed-docs.factor similarity index 100% rename from basis/typed/typed-docs.factor rename to core/typed/typed-docs.factor diff --git a/basis/typed/typed-tests.factor b/core/typed/typed-tests.factor similarity index 100% rename from basis/typed/typed-tests.factor rename to core/typed/typed-tests.factor diff --git a/basis/typed/typed.factor b/core/typed/typed.factor similarity index 95% rename from basis/typed/typed.factor rename to core/typed/typed.factor index a7e3fd970f..c52c7db4ab 100644 --- a/basis/typed/typed.factor +++ b/core/typed/typed.factor @@ -161,12 +161,10 @@ PRIVATE> [ drop "typed-def" set-word-prop ] [ 2drop "typed-word" word-prop set-last-word ] 3tri ; -SYNTAX: \TYPED: - (:) define-typed ; -SYNTAX: \TYPED:: - (::) define-typed ; +! SYNTAX: \TYPED: (:) define-typed ; +! SYNTAX: \TYPED:: (::) define-typed ; -USE: vocabs.loader +! USE: vocabs.loader -{ "typed" "prettyprint" } "typed.prettyprint" require-when -{ "typed" "compiler.cfg.debugger" } "typed.debugger" require-when +! { "typed" "prettyprint" } "typed.prettyprint" require-when +! { "typed" "compiler.cfg.debugger" } "typed.debugger" require-when