pervognsen / bitwise

Bitwise is an educational project where we create the software/hardware stack for a computer from scratch.
Other
5.12k stars 212 forks source link

Warnings about `foreign` and `static_assert` being unknown on Linux #58

Open DavidEGrayson opened 6 years ago

DavidEGrayson commented 6 years ago

When I compile Ion with GCC on Linux, it prints a bunch of warnings from builtin/types.ion. It's been happening for a while now. Here is a shell session reproducing the issue.

david@davidvm5 ~/bitwise (per_master)
$ git log -1
commit b5c2d0ad7132e666a69e402019e8731d204e2445 (HEAD -> per_master, origin/master, origin/HEAD)
Author: Per Vognsen
Date:   Wed Jun 6 16:15:23 2018 +0700

    #define __USE_MINGW_ANSI_STDIO 1 to support mingw-gcc
david@davidvm5 ~/bitwise (per_master)
$ cd ion
david@davidvm5 ~/bitwise/ion (per_master)
$ gcc main.c -o ion
david@davidvm5 ~/bitwise/ion (per_master)
$ cd ..
david@davidvm5 ~/bitwise (per_master)
$ echo $IONHOME
/home/david/bitwise/ion
david@davidvm5 ~/bitwise (per_master)
$ ./ion/ion testpkg
/home/david/bitwise/ion/system_packages/builtin/types.ion(1): warning: Unknown declaration #directive 'foreign'
/home/david/bitwise/ion/system_packages/builtin/types.ion(2): warning: Unknown declaration #directive 'foreign'
/home/david/bitwise/ion/system_packages/builtin/types.ion(4): warning: Unknown declaration #directive 'static_assert'
/home/david/bitwise/ion/system_packages/builtin/types.ion(5): warning: Unknown declaration #directive 'static_assert'
/home/david/bitwise/ion/system_packages/builtin/types.ion(6): warning: Unknown declaration #directive 'static_assert'
/home/david/bitwise/ion/system_packages/builtin/types.ion(7): warning: Unknown declaration #directive 'static_assert'
/home/david/bitwise/ion/system_packages/builtin/types.ion(8): warning: Unknown declaration #directive 'static_assert'
/home/david/bitwise/ion/system_packages/builtin/types.ion(9): warning: Unknown declaration #directive 'static_assert'
/home/david/bitwise/ion/system_packages/builtin/types.ion(10): warning: Unknown declaration #directive 'static_assert'
/home/david/bitwise/ion/system_packages/builtin/types.ion(11): warning: Unknown declaration #directive 'static_assert'
/home/david/bitwise/ion/system_packages/builtin/types.ion(12): warning: Unknown declaration #directive 'static_assert'
/home/david/bitwise/ion/system_packages/builtin/types.ion(13): warning: Unknown declaration #directive 'static_assert'
/home/david/bitwise/ion/system_packages/builtin/types.ion(14): warning: Unknown declaration #directive 'static_assert'
/home/david/bitwise/ion/system_packages/builtin/types.ion(15): warning: Unknown declaration #directive 'static_assert'
/home/david/bitwise/ion/system_packages/builtin/types.ion(17): warning: Unknown declaration #directive 'static_assert'
/home/david/bitwise/ion/system_packages/builtin/types.ion(18): warning: Unknown declaration #directive 'static_assert'
/home/david/bitwise/ion/system_packages/builtin/types.ion(19): warning: Unknown declaration #directive 'static_assert'
/home/david/bitwise/ion/system_packages/builtin/types.ion(20): warning: Unknown declaration #directive 'static_assert'
/home/david/bitwise/ion/system_packages/builtin/types.ion(21): warning: Unknown declaration #directive 'static_assert'
/home/david/bitwise/ion/system_packages/builtin/types.ion(22): warning: Unknown declaration #directive 'static_assert'
/home/david/bitwise/ion/system_packages/builtin/types.ion(23): warning: Unknown declaration #directive 'static_assert'
/home/david/bitwise/ion/system_packages/builtin/types.ion(24): warning: Unknown declaration #directive 'static_assert'
/home/david/bitwise/ion/system_packages/builtin/types.ion(25): warning: Unknown declaration #directive 'static_assert'
/home/david/bitwise/ion/system_packages/builtin/types.ion(26): warning: Unknown declaration #directive 'static_assert'
/home/david/bitwise/ion/system_packages/builtin/types.ion(27): warning: Unknown declaration #directive 'static_assert'
/home/david/bitwise/ion/system_packages/builtin/types.ion(28): warning: Unknown declaration #directive 'static_assert'
/home/david/bitwise/ion/system_packages/builtin/types.ion(29): warning: Unknown declaration #directive 'static_assert'
/home/david/bitwise/ion/system_packages/builtin/types.ion(30): warning: Unknown declaration #directive 'static_assert'
/home/david/bitwise/ion/system_packages/builtin/types_win32.ion(4): warning: Unknown declaration #directive 'static_assert'
/home/david/bitwise/ion/system_packages/builtin/types_win32.ion(5): warning: Unknown declaration #directive 'static_assert'
/home/david/bitwise/ion/system_packages/builtin/types_x64.ion(1): warning: Unknown declaration #directive 'static_assert'
Processed 100 symbols in 2 packages
Generated out_testpkg.c
david@davidvm5 ~/bitwise (per_master)
$ ls testpkg/
test.ion
david@davidvm5 ~/bitwise (per_master)
$ cat testpkg/test.ion 
func main() : int {
  return 1;
}
aameen951 commented 5 years ago

This issue might be the same as https://github.com/pervognsen/bitwise/issues/41#issuecomment-385286880

uucidl commented 5 years ago

I encountered and fixed this issue with commit: https://github.com/uucidl/bitwise/commit/688200250cfa5f7fd47cf24c187e52f86fd58a35 on my own repository.

sor commented 4 years ago

I had similar problems and fixed it differently.

In ion.c in void init_compiler(void) append the following line at the end of the function: map_put(&decl_note_names, static_assert_name, (void *)1);