From f0437a42422ee84d20c06b5731f963923acb858c Mon Sep 17 00:00:00 2001 From: gingerBill Date: Sat, 21 Aug 2021 13:44:16 +0100 Subject: [PATCH] Enforce `core:builtin` and `core:intrinsics` for imports --- core/bufio/scanner.odin | 2 +- core/container/map.odin | 2 +- core/fmt/fmt.odin | 2 +- core/hash/crc32.odin | 2 +- core/hash/hash.odin | 2 +- core/io/io.odin | 2 +- core/math/bits/bits.odin | 2 +- core/math/fixed/fixed.odin | 2 +- core/math/linalg/extended.odin | 2 +- core/math/linalg/general.odin | 2 +- core/math/math.odin | 2 +- core/mem/allocators.odin | 2 +- core/os/file_windows.odin | 2 +- core/reflect/reflect.odin | 2 +- core/runtime/core.odin | 2 +- core/runtime/core_builtin.odin | 2 +- core/runtime/core_builtin_soa.odin | 2 +- core/runtime/dynamic_map_internal.odin | 2 +- core/runtime/internal.odin | 2 +- core/runtime/internal_linux.odin | 2 +- core/runtime/internal_windows.odin | 2 +- core/runtime/os_specific_windows.odin | 2 +- core/runtime/udivmod128.odin | 2 +- core/slice/map.odin | 2 +- core/slice/slice.odin | 4 ++-- core/slice/sort.odin | 2 +- core/sort/sort.odin | 2 +- core/sync/atomic.odin | 2 +- core/sync/channel.odin | 2 +- core/sync/channel_windows.odin | 2 +- core/sync/sync.odin | 2 +- core/sync/sync2/atomic.odin | 2 +- core/sync/sync2/primitives_darwin.odin | 2 +- core/sync/wait_group.odin | 2 +- core/testing/runner_windows.odin | 2 +- core/thread/thread.odin | 2 +- core/thread/thread_pool.odin | 2 +- core/time/time.odin | 2 +- core/unicode/utf8/utf8string/string.odin | 2 +- src/parser.cpp | 7 ++++++- 40 files changed, 46 insertions(+), 41 deletions(-) diff --git a/core/bufio/scanner.odin b/core/bufio/scanner.odin index 1dd13f19a..2918764b0 100644 --- a/core/bufio/scanner.odin +++ b/core/bufio/scanner.odin @@ -4,7 +4,7 @@ import "core:bytes" import "core:io" import "core:mem" import "core:unicode/utf8" -import "intrinsics" +import "core:intrinsics" // Extra errors returns by scanning procedures Scanner_Extra_Error :: enum i32 { diff --git a/core/container/map.odin b/core/container/map.odin index c4795e996..c8d2bf996 100644 --- a/core/container/map.odin +++ b/core/container/map.odin @@ -1,6 +1,6 @@ package container -import "intrinsics" +import "core:intrinsics" _ :: intrinsics; diff --git a/core/fmt/fmt.odin b/core/fmt/fmt.odin index 4e19d7d19..092726a2f 100644 --- a/core/fmt/fmt.odin +++ b/core/fmt/fmt.odin @@ -10,7 +10,7 @@ import "core:strconv" import "core:strings" import "core:time" import "core:unicode/utf8" -import "intrinsics" +import "core:intrinsics" Info :: struct { minus: bool, diff --git a/core/hash/crc32.odin b/core/hash/crc32.odin index eff1e13fb..41a04880f 100644 --- a/core/hash/crc32.odin +++ b/core/hash/crc32.odin @@ -1,6 +1,6 @@ package hash -import "intrinsics" +import "core:intrinsics" @(optimization_mode="speed") crc32 :: proc(data: []byte, seed := u32(0)) -> u32 #no_bounds_check { diff --git a/core/hash/hash.odin b/core/hash/hash.odin index 36dda9333..91f0268d3 100644 --- a/core/hash/hash.odin +++ b/core/hash/hash.odin @@ -1,7 +1,7 @@ package hash import "core:mem" -import "intrinsics" +import "core:intrinsics" @(optimization_mode="speed") adler32 :: proc(data: []byte, seed := u32(1)) -> u32 #no_bounds_check { diff --git a/core/io/io.odin b/core/io/io.odin index 3727e219e..e7a1a4b5c 100644 --- a/core/io/io.odin +++ b/core/io/io.odin @@ -1,6 +1,6 @@ package io -import "intrinsics" +import "core:intrinsics" import "core:runtime" import "core:unicode/utf8" diff --git a/core/math/bits/bits.odin b/core/math/bits/bits.odin index 8cbb47096..91b773504 100644 --- a/core/math/bits/bits.odin +++ b/core/math/bits/bits.odin @@ -1,6 +1,6 @@ package math_bits -import "intrinsics" +import "core:intrinsics" U8_MIN :: 0; U16_MIN :: 0; diff --git a/core/math/fixed/fixed.odin b/core/math/fixed/fixed.odin index df6659ff5..6e4709af7 100644 --- a/core/math/fixed/fixed.odin +++ b/core/math/fixed/fixed.odin @@ -3,7 +3,7 @@ package math_fixed import "core:math" import "core:strconv" -import "intrinsics" +import "core:intrinsics" _ :: intrinsics; Fixed :: struct($Backing: typeid, $Fraction_Width: uint) diff --git a/core/math/linalg/extended.odin b/core/math/linalg/extended.odin index faf03e09e..373a4e4ce 100644 --- a/core/math/linalg/extended.odin +++ b/core/math/linalg/extended.odin @@ -1,6 +1,6 @@ package linalg -import "builtin" +import "core:builtin" import "core:math" radians :: proc(degrees: $T) -> (out: T) where IS_NUMERIC(ELEM_TYPE(T)) { diff --git a/core/math/linalg/general.odin b/core/math/linalg/general.odin index 53980d255..a053b75fd 100644 --- a/core/math/linalg/general.odin +++ b/core/math/linalg/general.odin @@ -1,7 +1,7 @@ package linalg import "core:math" -import "intrinsics" +import "core:intrinsics" // Generic diff --git a/core/math/math.odin b/core/math/math.odin index 511d88a26..28b0c42fc 100644 --- a/core/math/math.odin +++ b/core/math/math.odin @@ -1,6 +1,6 @@ package math -import "intrinsics" +import "core:intrinsics" _ :: intrinsics; Float_Class :: enum { diff --git a/core/mem/allocators.odin b/core/mem/allocators.odin index 2aea430cb..21e0fedb5 100644 --- a/core/mem/allocators.odin +++ b/core/mem/allocators.odin @@ -1,6 +1,6 @@ package mem -import "intrinsics" +import "core:intrinsics" import "core:runtime" nil_allocator_proc :: proc(allocator_data: rawptr, mode: Allocator_Mode, diff --git a/core/os/file_windows.odin b/core/os/file_windows.odin index 9e22c96a2..fa61a64e4 100644 --- a/core/os/file_windows.odin +++ b/core/os/file_windows.odin @@ -1,7 +1,7 @@ package os import win32 "core:sys/windows" -import "intrinsics" +import "core:intrinsics" is_path_separator :: proc(c: byte) -> bool { return c == '/' || c == '\\'; diff --git a/core/reflect/reflect.odin b/core/reflect/reflect.odin index 7226117c3..54cd2aea6 100644 --- a/core/reflect/reflect.odin +++ b/core/reflect/reflect.odin @@ -2,7 +2,7 @@ package reflect import "core:runtime" import "core:mem" -import "intrinsics" +import "core:intrinsics" _ :: intrinsics; Type_Info :: runtime.Type_Info; diff --git a/core/runtime/core.odin b/core/runtime/core.odin index 813fe8c6b..73af39864 100644 --- a/core/runtime/core.odin +++ b/core/runtime/core.odin @@ -20,7 +20,7 @@ // package runtime -import "intrinsics" +import "core:intrinsics" // NOTE(bill): This must match the compiler's Calling_Convention :: enum u8 { diff --git a/core/runtime/core_builtin.odin b/core/runtime/core_builtin.odin index 66223fb01..f4dc6aebe 100644 --- a/core/runtime/core_builtin.odin +++ b/core/runtime/core_builtin.odin @@ -1,6 +1,6 @@ package runtime -import "intrinsics" +import "core:intrinsics" @builtin Maybe :: union($T: typeid) #maybe {T}; diff --git a/core/runtime/core_builtin_soa.odin b/core/runtime/core_builtin_soa.odin index e00855c00..3fbbde161 100644 --- a/core/runtime/core_builtin_soa.odin +++ b/core/runtime/core_builtin_soa.odin @@ -1,6 +1,6 @@ package runtime -import "intrinsics" +import "core:intrinsics" _ :: intrinsics; /* diff --git a/core/runtime/dynamic_map_internal.odin b/core/runtime/dynamic_map_internal.odin index d03e5d3aa..8bb8975b6 100644 --- a/core/runtime/dynamic_map_internal.odin +++ b/core/runtime/dynamic_map_internal.odin @@ -1,6 +1,6 @@ package runtime -import "intrinsics" +import "core:intrinsics" _ :: intrinsics; INITIAL_MAP_CAP :: 16; diff --git a/core/runtime/internal.odin b/core/runtime/internal.odin index 5edd07a3e..143a8c518 100644 --- a/core/runtime/internal.odin +++ b/core/runtime/internal.odin @@ -1,6 +1,6 @@ package runtime -import "intrinsics" +import "core:intrinsics" bswap_16 :: proc "none" (x: u16) -> u16 { return x>>8 | x<<8; diff --git a/core/runtime/internal_linux.odin b/core/runtime/internal_linux.odin index ad46f55e8..a712bb367 100644 --- a/core/runtime/internal_linux.odin +++ b/core/runtime/internal_linux.odin @@ -1,6 +1,6 @@ package runtime -import "intrinsics" +import "core:intrinsics" @(link_name="__umodti3") umodti3 :: proc "c" (a, b: u128) -> u128 { diff --git a/core/runtime/internal_windows.odin b/core/runtime/internal_windows.odin index 2d3009eea..cf7203aa4 100644 --- a/core/runtime/internal_windows.odin +++ b/core/runtime/internal_windows.odin @@ -1,6 +1,6 @@ package runtime -import "intrinsics" +import "core:intrinsics" @(link_name="__umodti3") umodti3 :: proc "c" (a, b: u128) -> u128 { diff --git a/core/runtime/os_specific_windows.odin b/core/runtime/os_specific_windows.odin index 5ec8d6336..1b66fda49 100644 --- a/core/runtime/os_specific_windows.odin +++ b/core/runtime/os_specific_windows.odin @@ -2,7 +2,7 @@ //+build windows package runtime -import "intrinsics" +import "core:intrinsics" foreign import kernel32 "system:Kernel32.lib" diff --git a/core/runtime/udivmod128.odin b/core/runtime/udivmod128.odin index fff856ab6..8850e0b24 100644 --- a/core/runtime/udivmod128.odin +++ b/core/runtime/udivmod128.odin @@ -1,6 +1,6 @@ package runtime -import "intrinsics" +import "core:intrinsics" udivmod128 :: proc "c" (a, b: u128, rem: ^u128) -> u128 { _ctz :: intrinsics.count_trailing_zeros; diff --git a/core/slice/map.odin b/core/slice/map.odin index a92697f14..d44b4b5b0 100644 --- a/core/slice/map.odin +++ b/core/slice/map.odin @@ -1,6 +1,6 @@ package slice -import "intrinsics" +import "core:intrinsics" import "core:runtime" import "core:mem" diff --git a/core/slice/slice.odin b/core/slice/slice.odin index dc1bceb58..493afb8a2 100644 --- a/core/slice/slice.odin +++ b/core/slice/slice.odin @@ -1,7 +1,7 @@ package slice -import "intrinsics" -import "builtin" +import "core:intrinsics" +import "core:builtin" import "core:math/bits" import "core:mem" diff --git a/core/slice/sort.odin b/core/slice/sort.odin index 2dd3bb852..01ab91452 100644 --- a/core/slice/sort.odin +++ b/core/slice/sort.odin @@ -1,6 +1,6 @@ package slice -import "intrinsics" +import "core:intrinsics" _ :: intrinsics; ORD :: intrinsics.type_is_ordered; diff --git a/core/sort/sort.odin b/core/sort/sort.odin index 84dd538cb..7eb4fb89a 100644 --- a/core/sort/sort.odin +++ b/core/sort/sort.odin @@ -2,7 +2,7 @@ package sort import "core:mem" import _slice "core:slice" -import "intrinsics" +import "core:intrinsics" _ :: intrinsics; ORD :: intrinsics.type_is_ordered; diff --git a/core/sync/atomic.odin b/core/sync/atomic.odin index 489d3e407..9a2274f69 100644 --- a/core/sync/atomic.odin +++ b/core/sync/atomic.odin @@ -1,6 +1,6 @@ package sync -import "intrinsics" +import "core:intrinsics" Ordering :: enum { Relaxed, // Monotonic diff --git a/core/sync/channel.odin b/core/sync/channel.odin index 551413651..46eb53af7 100644 --- a/core/sync/channel.odin +++ b/core/sync/channel.odin @@ -2,7 +2,7 @@ package sync import "core:mem" import "core:time" -import "intrinsics" +import "core:intrinsics" import "core:math/rand" _, _ :: time, rand; diff --git a/core/sync/channel_windows.odin b/core/sync/channel_windows.odin index 3b0225e3a..a28c41437 100644 --- a/core/sync/channel_windows.odin +++ b/core/sync/channel_windows.odin @@ -1,6 +1,6 @@ package sync -import "intrinsics" +import "core:intrinsics" import win32 "core:sys/windows" import "core:time" diff --git a/core/sync/sync.odin b/core/sync/sync.odin index 51e1a93b8..5c2c09a7a 100644 --- a/core/sync/sync.odin +++ b/core/sync/sync.odin @@ -1,6 +1,6 @@ package sync -import "intrinsics" +import "core:intrinsics" cpu_relax :: #force_inline proc "contextless" () { intrinsics.cpu_relax(); diff --git a/core/sync/sync2/atomic.odin b/core/sync/sync2/atomic.odin index efefc8025..89d7bfe71 100644 --- a/core/sync/sync2/atomic.odin +++ b/core/sync/sync2/atomic.odin @@ -1,6 +1,6 @@ package sync2 -import "intrinsics" +import "core:intrinsics" cpu_relax :: intrinsics.cpu_relax; diff --git a/core/sync/sync2/primitives_darwin.odin b/core/sync/sync2/primitives_darwin.odin index 29e00f028..af342abf3 100644 --- a/core/sync/sync2/primitives_darwin.odin +++ b/core/sync/sync2/primitives_darwin.odin @@ -4,7 +4,7 @@ package sync2 import "core:time" import "core:c" -import "intrinsics" +import "core:intrinsics" foreign import pthread "System.framework" diff --git a/core/sync/wait_group.odin b/core/sync/wait_group.odin index 477bce9c2..a05ff9d71 100644 --- a/core/sync/wait_group.odin +++ b/core/sync/wait_group.odin @@ -1,6 +1,6 @@ package sync -import "intrinsics" +import "core:intrinsics" Wait_Group :: struct { counter: int, diff --git a/core/testing/runner_windows.odin b/core/testing/runner_windows.odin index 255d44f1b..51315290b 100644 --- a/core/testing/runner_windows.odin +++ b/core/testing/runner_windows.odin @@ -4,7 +4,7 @@ package testing import win32 "core:sys/windows" import "core:runtime" -import "intrinsics" +import "core:intrinsics" Sema :: struct { diff --git a/core/thread/thread.odin b/core/thread/thread.odin index 09d23fe82..5450aa860 100644 --- a/core/thread/thread.odin +++ b/core/thread/thread.odin @@ -2,7 +2,7 @@ package thread import "core:runtime" import "core:mem" -import "intrinsics" +import "core:intrinsics" _ :: intrinsics; diff --git a/core/thread/thread_pool.odin b/core/thread/thread_pool.odin index 64cd8ea38..e7cd6d45b 100644 --- a/core/thread/thread_pool.odin +++ b/core/thread/thread_pool.odin @@ -1,6 +1,6 @@ package thread -import "intrinsics" +import "core:intrinsics" import "core:sync" import "core:mem" diff --git a/core/time/time.odin b/core/time/time.odin index c75549b17..620a08c31 100644 --- a/core/time/time.odin +++ b/core/time/time.odin @@ -1,6 +1,6 @@ package time -import "intrinsics" +import "core:intrinsics" Duration :: distinct i64; diff --git a/core/unicode/utf8/utf8string/string.odin b/core/unicode/utf8/utf8string/string.odin index a34e754cf..23e2eefc6 100644 --- a/core/unicode/utf8/utf8string/string.odin +++ b/core/unicode/utf8/utf8string/string.odin @@ -2,7 +2,7 @@ package utf8string import "core:unicode/utf8" import "core:runtime" -import "builtin" +import "core:builtin" String :: struct { contents: string, diff --git a/src/parser.cpp b/src/parser.cpp index 3b5c30207..6184a62ab 100644 --- a/src/parser.cpp +++ b/src/parser.cpp @@ -5184,7 +5184,12 @@ bool determine_path_from_string(BlockingMutex *file_mutex, Ast *node, String bas if (is_package_name_reserved(file_str)) { *path = file_str; - return true; + if (collection_name == "core") { + return true; + } else { + syntax_error(node, "The package '%.*s' must be imported with the core library collection: 'core:%.*s'", LIT(file_str), LIT(file_str)); + return false; + } } if (file_mutex) mutex_lock(file_mutex);