diff options
| author | johnvg | 2012-08-16 09:18:54 +0000 | 
|---|---|---|
| committer | johnvg | 2012-08-16 09:18:54 +0000 | 
| commit | dee7082b27bf1498706afc8c80e1e41267f60262 (patch) | |
| tree | 51d4cf13b91bff82cf5941ecc03d02c9ef2025a8 /frontend/partition.icl | |
| parent | fix coercibility check of instance of classes with a . before a (constructor)... (diff) | |
optimize function get_mark
git-svn-id: https://svn.cs.ru.nl/repos/clean-compiler/trunk@2154 1f8540f1-abd5-4d5b-9d24-4c5ce8603e2d
Diffstat (limited to 'frontend/partition.icl')
| -rw-r--r-- | frontend/partition.icl | 16 | 
1 files changed, 10 insertions, 6 deletions
| diff --git a/frontend/partition.icl b/frontend/partition.icl index f10ccc3..74bada3 100644 --- a/frontend/partition.icl +++ b/frontend/partition.icl @@ -1,6 +1,3 @@ -/* -	module owner: Diederik van Arkel -*/  implementation module partition  import syntax, transform, utilities @@ -224,9 +221,16 @@ component_members_to_list NoComponentMembers  get_mark max_fun_nr marks fun  //	:== marks.[fun] -	:== case [m_mark \\ {m_fun,m_mark} <-: marks | m_fun == fun] of -		[]		-> max_fun_nr -		[m:_]	-> m +	:== get_mark 0 marks fun max_fun_nr +where +	get_mark :: !Int !{#Mark} !Int !Int -> Int +	get_mark i marks fun max_fun_nr +		| i<size marks +			| marks.[i].m_fun<>fun +				= get_mark (i+1) marks fun max_fun_nr +				= marks.[i].m_mark +			= max_fun_nr +  set_mark marks fun val  //	:== { marks & [fun] = val}  //	:== { if (m_fun==fun) {m & m_mark = val} m \\ m=:{m_fun=m_fun} <-: marks} | 
