From b510b90916df3fb0b1c69861a41e0d194ec27b47 Mon Sep 17 00:00:00 2001 From: Simonas Kazlauskas Date: Sat, 7 Feb 2015 15:41:21 +0200 Subject: [PATCH 1/2] =?UTF-8?q?Do=20not=20fail=20if=20--emit=E2=89=A0link?= =?UTF-8?q?=20and=20there=E2=80=99s=20no=20main=20fn?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes #21813 --- src/librustc/middle/entry.rs | 5 ++++- src/librustc/session/config.rs | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/librustc/middle/entry.rs b/src/librustc/middle/entry.rs index 0ce9db1c80f3..b5904f23ef36 100644 --- a/src/librustc/middle/entry.rs +++ b/src/librustc/middle/entry.rs @@ -50,7 +50,10 @@ pub fn find_entry_point(session: &Session, ast_map: &ast_map::Map) { let any_exe = session.crate_types.borrow().iter().any(|ty| { *ty == config::CrateTypeExecutable }); - if !any_exe { + let emit_link = session.opts.output_types.iter().any(|ty| { + *ty == config::OutputTypeExe + }); + if !any_exe || !emit_link { // No need to find a main function return } diff --git a/src/librustc/session/config.rs b/src/librustc/session/config.rs index efd2392e453e..f42b25b92295 100644 --- a/src/librustc/session/config.rs +++ b/src/librustc/session/config.rs @@ -82,7 +82,7 @@ pub struct Options { pub debuginfo: DebugInfoLevel, pub lint_opts: Vec<(String, lint::Level)>, pub describe_lints: bool, - pub output_types: Vec , + pub output_types: Vec, // This was mutable for rustpkg, which updates search paths based on the // parsed code. It remains mutable in case its replacements wants to use // this. From 61b4823b77ffaf39e0825314d749eac3a115764d Mon Sep 17 00:00:00 2001 From: Simonas Kazlauskas Date: Sun, 8 Feb 2015 10:51:46 +0200 Subject: [PATCH 2/2] Add a test for mainless emit targets --- src/test/run-make/empty-file/Makefile | 5 +++++ src/test/run-make/empty-file/empty.rs | 0 2 files changed, 5 insertions(+) create mode 100644 src/test/run-make/empty-file/Makefile create mode 100644 src/test/run-make/empty-file/empty.rs diff --git a/src/test/run-make/empty-file/Makefile b/src/test/run-make/empty-file/Makefile new file mode 100644 index 000000000000..f55a2cc3bb15 --- /dev/null +++ b/src/test/run-make/empty-file/Makefile @@ -0,0 +1,5 @@ +-include ../tools.mk + +all: + $(RUSTC) --emit=asm,llvm-bc,llvm-ir,obj,dep-info empty.rs + $(RUSTC) --emit=link --crate-type=rlib,dylib,staticlib empty.rs diff --git a/src/test/run-make/empty-file/empty.rs b/src/test/run-make/empty-file/empty.rs new file mode 100644 index 000000000000..e69de29bb2d1