Why are you using `std.traits.fullyQualifiedName`?

Richard (Rikki) Andrew Cattermole richard at cattermole.co.nz
Sat Jan 21 05:21:15 UTC 2023


You shouldn't use fullyQualifiedName to do symbol lookup, that is where 
Adam is coming from (it is very likely to cause issues).

However I strongly believe that he is wrong about it shouldn't exist. It 
should, it needs to exist, its a basic introspection ability.

There are two areas where I use it:

1) Uniquely identifying a type (registration of types for things like 
serializing, passing to hash function ext.).
2) Pretty printing for debugging. Here is some output that I generated 
yesterday:



- sidero.base.datetime.time.timezone.TimeZone(
	state: sidero.base.datetime.time.timezone.TimeZone.State at 1E3A01E4F00(
		refCount: 6,
		allocator: sidero.base.allocators.api.RCAllocator(
			---- ignoring ----
			private refAdd_,
			private refSub_,
			private allocate_,
			private deallocate_,
			private reallocate_,
			private owns_,
			private deallocateAll_,
			private empty_),
		name: "Pacific/Auckland",
		haveDaylightSavings: true,
		source: sidero.base.datetime.time.timezone.TimeZone.Source.Windows,
		fixedBias: 0,
		windowsBase: 
sidero.base.datetime.time.internal.windows.WindowsTimeZoneBase(
			dtzi: 
sidero.base.datetime.time.internal.windows.DYNAMIC_TIME_ZONE_INFORMATION(
				Bias: -720,
				StandardName: "New Zealand Standard Time\0ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿",
				StandardDate: core.sys.windows.winbase.SYSTEMTIME(
					wYear: 0,
					wMonth: 4,
					wDayOfWeek: 0,
					wDay: 1,
					wHour: 3,
					wMinute: 0,
					wSecond: 0,
					wMilliseconds: 0),
				StandardBias: 0,
				DaylightName: "New Zealand Daylight Time\0ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿",
				DaylightDate: core.sys.windows.winbase.SYSTEMTIME(
					wYear: 0,
					wMonth: 9,
					wDayOfWeek: 0,
					wDay: 5,
					wHour: 2,
					wMinute: 0,
					wSecond: 0,
					wMilliseconds: 0),
				DaylightBias: -60,
				TimeZoneKeyName: "New Zealand Standard 
Time\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 

				DynamicDaylightTimeDisabled: false),
			stdName: "New Zealand Standard Time",
			dstName: "New Zealand Daylight Time",
			standardOffset: 
sidero.base.datetime.time.internal.windows.WindowsTimeZoneBase.Bias(
				seconds: 0,
				appliesOnDate: sidero.base.datetime.calendars.gregorian.GregorianDate(
					---- ignoring ----
					private year_,
					private month_,
					private day_ ->
1/4/2023),
				appliesOnTime: sidero.base.datetime.time.timeofday.TimeOfDay(
					---- ignoring ----
					private hour_,
					private minute_,
					private second_,
					private msec_ ->
03:00:00.000000)),
			daylightSavingsOffset: 
sidero.base.datetime.time.internal.windows.WindowsTimeZoneBase.Bias(
				seconds: -3600,
				appliesOnDate: sidero.base.datetime.calendars.gregorian.GregorianDate(
					---- ignoring ----
					private year_,
					private month_,
					private day_ ->
5/9/2023),
				appliesOnTime: sidero.base.datetime.time.timeofday.TimeOfDay(
					---- ignoring ----
					private hour_,
					private minute_,
					private second_,
					private msec_ ->
02:00:00.000000))),
		ianaTZBase: sidero.base.datetime.time.internal.iana.IanaTZBase(
			tzFile: no-error but null,
			startUnixTime: 0,
			endUnixTime: 0,
			transitionsForRange: 
sidero.base.containers.dynamicarray.DynamicArray!(sidero.base.datetime.time.internal.iana.TZFile.Transition)(
				---- ignoring ----
				private state,
				private minimumOffset,
				private maximumOffset [])),
		posixTZBase: sidero.base.datetime.time.internal.posix.PosixTZBase(
			loadFromTZifFile: null,
			stdName: null,
			dstName: null,
			stdOffset: 0,
			dstOffset: 0,
			transitionToStd: 
sidero.base.datetime.time.internal.posix.PosixTZBaseRule(
				type: 
sidero.base.datetime.time.internal.posix.PosixTZBaseRule.Type.NoDST,
				weekOfMonth: 0,
				dayOfWeek: 0,
				secondsBias: 0
				---- ignoring ----
				union julianDay,
				union dayOfYear,
				union monthOfYear),
			transitionToDST: 
sidero.base.datetime.time.internal.posix.PosixTZBaseRule(
				type: 
sidero.base.datetime.time.internal.posix.PosixTZBaseRule.Type.NoDST,
				weekOfMonth: 0,
				dayOfWeek: 0,
				secondsBias: 0
				---- ignoring ----
				union julianDay,
				union dayOfYear,
				union monthOfYear))) ->
Pacific/Auckland)


More information about the Digitalmars-d mailing list