Missing compiler warning?

Chris wendlec at tcd.ie
Fri Oct 18 06:38:04 PDT 2013


Ok. Here's a version to work with, if anyone wants to reproduce 
the behavior.

import std.stdio;

void main() {
	auto sub = new BaseSub();
	sub.doSomething();
}

class Base {
	SomeStruct someStruct;
	this() {
		
	}
	
	public void doSomething() {
		writeln("On strike today");
	}
}

class BaseSub : Base {
	this () {
		super();
	}
	
	override {
		public void doSomething() {
			auto someStruct = checkSomething("input"); // Bug here. Remove 
auto and "Same here" will be printed.
			doSomethingElse();
		}
	}
	
	private void doSomethingElse() {
		if (someStruct.equal) {
			writeln("Same here!");
		}
	}
	
	private auto checkSomething(string s) {
		return SomeStruct(s);
	}
}

struct SomeStruct {
	private:
	string str;
	bool isEqual;
	this(string s) {
		str = s;
		checkInput();
	}
	
	private void checkInput() {
		if (str == "input") {
			isEqual = true;
		}
	}
	
	@property bool equal() {
		return isEqual;
	}
}


More information about the Digitalmars-d mailing list