From 0f59ded4389202468dd5bcb420724395afbfe1f7 Mon Sep 17 00:00:00 2001 From: John Hodge Date: Wed, 15 May 2019 21:19:57 +0800 Subject: Expand - Track include!/include_str!/include_bytes! files for dependencies --- src/ast/crate.hpp | 3 ++- src/expand/include.cpp | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/ast/crate.hpp b/src/ast/crate.hpp index 11fba9c0..79cb9cd7 100644 --- a/src/ast/crate.hpp +++ b/src/ast/crate.hpp @@ -57,7 +57,8 @@ public: bool m_test_harness = false; ::std::vector m_tests; - //::std::vector<::std::string> m_extra_files; + /// Files loaded using things like include! and include_str! + mutable ::std::vector<::std::string> m_extra_files; // Procedural macros! ::std::vector m_proc_macros; diff --git a/src/expand/include.cpp b/src/expand/include.cpp index 59f33d47..8078d5d0 100644 --- a/src/expand/include.cpp +++ b/src/expand/include.cpp @@ -12,6 +12,7 @@ #include #include // Lexer (new files) #include +#include namespace { @@ -75,6 +76,7 @@ class CIncludeExpander: GET_CHECK_TOK(tok, lex, TOK_EOF); ::std::string file_path = get_path_relative_to(mod.m_file_info.path, mv$(path)); + crate.m_extra_files.push_back(file_path); try { return box$( Lexer(file_path) ); @@ -101,6 +103,7 @@ class CIncludeBytesExpander: GET_CHECK_TOK(tok, lex, TOK_EOF); ::std::string file_path = get_path_relative_to(mod.m_file_info.path, mv$(path)); + crate.m_extra_files.push_back(file_path); ::std::ifstream is(file_path); if( !is.good() ) { @@ -130,6 +133,7 @@ class CIncludeStrExpander: GET_CHECK_TOK(tok, lex, TOK_EOF); ::std::string file_path = get_path_relative_to(mod.m_file_info.path, mv$(path)); + crate.m_extra_files.push_back(file_path); ::std::ifstream is(file_path); if( !is.good() ) { -- cgit v1.2.3