mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	Adding some samples to verify new heuristics
This commit is contained in:
		
							
								
								
									
										46
									
								
								samples/Mercury/switch_detection_bug.m
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								samples/Mercury/switch_detection_bug.m
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,46 @@ | ||||
| % This is a regression test for a bug in switch detection | ||||
| % where it was preferring incomplete switches to complete | ||||
| % one-case switches, and hence inferring the wrong determinism. | ||||
|  | ||||
| %------------------------------------------------------------------------------% | ||||
|  | ||||
| :- module switch_detection_bug. | ||||
|  | ||||
| :- interface. | ||||
|  | ||||
| :- type note ---> note(rank, modifier, octave). | ||||
|  | ||||
| :- type rank ---> c ; d ; e ; f ; g ; a ; b . | ||||
|  | ||||
| :- type modifier ---> natural ; sharp ; flat . | ||||
|  | ||||
| :- type octave == int. | ||||
|  | ||||
| :- type qualifier ---> maj ; min . | ||||
|  | ||||
| :- pred next_topnote(note, qualifier, note). | ||||
| :- mode next_topnote(in, in, out) is multi. | ||||
|  | ||||
| %------------------------------------------------------------------------------% | ||||
|  | ||||
| :- implementation. | ||||
|  | ||||
| next_topnote(note(c, _, Oct), _, note(d, natural, Oct)). | ||||
| next_topnote(note(d, _, Oct), _, note(c, natural, Oct)). | ||||
| next_topnote(note(d, _, Oct), maj, note(e, natural, Oct)). | ||||
| next_topnote(note(d, _, Oct), min, note(e, flat, Oct)). | ||||
| next_topnote(note(e, _, Oct), _, note(d, natural, Oct)). | ||||
| next_topnote(note(e, _, Oct), _, note(f, natural, Oct)). | ||||
| next_topnote(note(f, _, Oct), maj, note(e, natural, Oct)). | ||||
| next_topnote(note(f, _, Oct), min, note(e, flat, Oct)). | ||||
| next_topnote(note(g, _, Oct), _, note(f, natural, Oct)). | ||||
| next_topnote(note(g, _, Oct), min, note(a, flat, Oct)). | ||||
| next_topnote(note(g, _, Oct), maj, note(a, natural, Oct)). | ||||
| next_topnote(note(a, _, Oct), _, note(g, natural, Oct)). | ||||
| next_topnote(note(a, _, Oct), min, note(b, flat, Oct)). | ||||
| next_topnote(note(a, _, Oct), maj, note(b, natural, Oct)). | ||||
| next_topnote(note(b, _, Oct), maj, note(a, natural, Oct)). | ||||
| next_topnote(note(b, _, Oct), min, note(a, flat, Oct)). | ||||
|  | ||||
| %------------------------------------------------------------------------------% | ||||
|  | ||||
		Reference in New Issue
	
	Block a user